netlink-types.h revision 2bdee95a765457fe4206b89d51974ae56e75c588
144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* 244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink-types.h Netlink Types (Private) 344d362409d5469aed47d19e7908d19bd194493aThomas Graf * 444d362409d5469aed47d19e7908d19bd194493aThomas Graf * This library is free software; you can redistribute it and/or 544d362409d5469aed47d19e7908d19bd194493aThomas Graf * modify it under the terms of the GNU Lesser General Public 644d362409d5469aed47d19e7908d19bd194493aThomas Graf * License as published by the Free Software Foundation version 2.1 744d362409d5469aed47d19e7908d19bd194493aThomas Graf * of the License. 844d362409d5469aed47d19e7908d19bd194493aThomas Graf * 9535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf 1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef NETLINK_LOCAL_TYPES_H_ 1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NETLINK_LOCAL_TYPES_H_ 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf 1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/list.h> 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/link.h> 1744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/qdisc.h> 1844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/rtnl.h> 1944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/route.h> 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf 2144d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_SOCK_BUFSIZE_SET (1<<0) 2244d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_SOCK_PASSCRED (1<<1) 2344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_OWN_PORT (1<<2) 2444d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_MSG_PEEK (1<<3) 252bdee95a765457fe4206b89d51974ae56e75c588Thomas Graf#define NL_NO_AUTO_ACK (1<<4) 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_MSG_CRED_PRESENT 1 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf 2944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_cache_ops; 301155370f520cb64657e25153255cf7dc1424317fThomas Grafstruct nl_sock; 3144d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_object; 3244d362409d5469aed47d19e7908d19bd194493aThomas Graf 3344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_cb 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf nl_recvmsg_msg_cb_t cb_set[NL_CB_TYPE_MAX+1]; 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf void * cb_args[NL_CB_TYPE_MAX+1]; 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf nl_recvmsg_err_cb_t cb_err; 3944d362409d5469aed47d19e7908d19bd194493aThomas Graf void * cb_err_arg; 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf 4144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** May be used to replace nl_recvmsgs with your own implementation 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf * in all internal calls to nl_recvmsgs. */ 431155370f520cb64657e25153255cf7dc1424317fThomas Graf int (*cb_recvmsgs_ow)(struct nl_sock *, 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_cb *); 4544d362409d5469aed47d19e7908d19bd194493aThomas Graf 4644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** Overwrite internal calls to nl_recv, must return the number of 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf * octets read and allocate a buffer for the received data. */ 481155370f520cb64657e25153255cf7dc1424317fThomas Graf int (*cb_recv_ow)(struct nl_sock *, 4944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct sockaddr_nl *, 5044d362409d5469aed47d19e7908d19bd194493aThomas Graf unsigned char **, 5144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct ucred **); 5244d362409d5469aed47d19e7908d19bd194493aThomas Graf 5344d362409d5469aed47d19e7908d19bd194493aThomas Graf /** Overwrites internal calls to nl_send, must send the netlink 5444d362409d5469aed47d19e7908d19bd194493aThomas Graf * message. */ 551155370f520cb64657e25153255cf7dc1424317fThomas Graf int (*cb_send_ow)(struct nl_sock *, 5644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_msg *); 5744d362409d5469aed47d19e7908d19bd194493aThomas Graf 5844d362409d5469aed47d19e7908d19bd194493aThomas Graf int cb_refcnt; 5944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 6044d362409d5469aed47d19e7908d19bd194493aThomas Graf 611155370f520cb64657e25153255cf7dc1424317fThomas Grafstruct nl_sock 6244d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 631155370f520cb64657e25153255cf7dc1424317fThomas Graf struct sockaddr_nl s_local; 641155370f520cb64657e25153255cf7dc1424317fThomas Graf struct sockaddr_nl s_peer; 651155370f520cb64657e25153255cf7dc1424317fThomas Graf int s_fd; 661155370f520cb64657e25153255cf7dc1424317fThomas Graf int s_proto; 671155370f520cb64657e25153255cf7dc1424317fThomas Graf unsigned int s_seq_next; 681155370f520cb64657e25153255cf7dc1424317fThomas Graf unsigned int s_seq_expect; 691155370f520cb64657e25153255cf7dc1424317fThomas Graf int s_flags; 701155370f520cb64657e25153255cf7dc1424317fThomas Graf struct nl_cb * s_cb; 7144d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 7244d362409d5469aed47d19e7908d19bd194493aThomas Graf 7344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_cache 7444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 7544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_list_head c_items; 7644d362409d5469aed47d19e7908d19bd194493aThomas Graf int c_nitems; 7744d362409d5469aed47d19e7908d19bd194493aThomas Graf int c_iarg1; 7844d362409d5469aed47d19e7908d19bd194493aThomas Graf int c_iarg2; 7944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_cache_ops * c_ops; 8044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 8144d362409d5469aed47d19e7908d19bd194493aThomas Graf 8244d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_cache_assoc 8344d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 8444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_cache * ca_cache; 8544d362409d5469aed47d19e7908d19bd194493aThomas Graf change_func_t ca_change; 8644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 8744d362409d5469aed47d19e7908d19bd194493aThomas Graf 8844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_cache_mngr 8944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 9044d362409d5469aed47d19e7908d19bd194493aThomas Graf int cm_protocol; 9144d362409d5469aed47d19e7908d19bd194493aThomas Graf int cm_flags; 9244d362409d5469aed47d19e7908d19bd194493aThomas Graf int cm_nassocs; 931155370f520cb64657e25153255cf7dc1424317fThomas Graf struct nl_sock * cm_handle; 9444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_cache_assoc * cm_assocs; 9544d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 9644d362409d5469aed47d19e7908d19bd194493aThomas Graf 9744d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_parser_param; 9844d362409d5469aed47d19e7908d19bd194493aThomas Graf 99535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf#define LOOSE_COMPARISON 1 10044d362409d5469aed47d19e7908d19bd194493aThomas Graf 10144d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_OBJ_MARK 1 10244d362409d5469aed47d19e7908d19bd194493aThomas Graf 10344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_object 10444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 10544d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 10644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 10744d362409d5469aed47d19e7908d19bd194493aThomas Graf 10844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_data 10944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 11044d362409d5469aed47d19e7908d19bd194493aThomas Graf size_t d_size; 11144d362409d5469aed47d19e7908d19bd194493aThomas Graf void * d_data; 11244d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 11344d362409d5469aed47d19e7908d19bd194493aThomas Graf 11444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_addr 11544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 11644d362409d5469aed47d19e7908d19bd194493aThomas Graf int a_family; 11744d362409d5469aed47d19e7908d19bd194493aThomas Graf unsigned int a_maxsize; 11844d362409d5469aed47d19e7908d19bd194493aThomas Graf unsigned int a_len; 11944d362409d5469aed47d19e7908d19bd194493aThomas Graf int a_prefixlen; 12044d362409d5469aed47d19e7908d19bd194493aThomas Graf int a_refcnt; 12144d362409d5469aed47d19e7908d19bd194493aThomas Graf char a_addr[0]; 12244d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 12344d362409d5469aed47d19e7908d19bd194493aThomas Graf 12444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_msg 12544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 12644d362409d5469aed47d19e7908d19bd194493aThomas Graf int nm_protocol; 12744d362409d5469aed47d19e7908d19bd194493aThomas Graf int nm_flags; 12844d362409d5469aed47d19e7908d19bd194493aThomas Graf struct sockaddr_nl nm_src; 12944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct sockaddr_nl nm_dst; 13044d362409d5469aed47d19e7908d19bd194493aThomas Graf struct ucred nm_creds; 13144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nlmsghdr * nm_nlh; 1326de17f3308cfd53ad922d144a1b28ddd962d6678Thomas Graf size_t nm_size; 13323ee46ef7115c2e311c36e43a833e6c3deada18aThomas Graf int nm_refcnt; 13444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 13544d362409d5469aed47d19e7908d19bd194493aThomas Graf 13644d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_link_map 13744d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 13844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t lm_mem_start; 13944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t lm_mem_end; 14044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t lm_base_addr; 14144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t lm_irq; 14244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t lm_dma; 14344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t lm_port; 14444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 14544d362409d5469aed47d19e7908d19bd194493aThomas Graf 14644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFQDISCSIZ 32 14744d362409d5469aed47d19e7908d19bd194493aThomas Graf 14844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_link 14944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 15044d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 15144d362409d5469aed47d19e7908d19bd194493aThomas Graf 15244d362409d5469aed47d19e7908d19bd194493aThomas Graf char l_name[IFNAMSIZ]; 15344d362409d5469aed47d19e7908d19bd194493aThomas Graf 15444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_family; 15544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_arptype; 15644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_index; 15744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_flags; 15844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_change; 15944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_mtu; 16044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_link; 16144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_txqlen; 16244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_weight; 16344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_master; 16444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *l_addr; 16544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *l_bcast; 16644d362409d5469aed47d19e7908d19bd194493aThomas Graf char l_qdisc[IFQDISCSIZ]; 16744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_link_map l_map; 16844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t l_stats[RTNL_LINK_STATS_MAX+1]; 16944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t l_flag_mask; 1703ad4665be2f192291238cbe78118a57ec42436c6Thomas Graf uint8_t l_operstate; 1713ad4665be2f192291238cbe78118a57ec42436c6Thomas Graf uint8_t l_linkmode; 172a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf /* 2 byte hole */ 173a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf struct rtnl_link_info_ops *l_info_ops; 174a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf void * l_info; 17544d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 17644d362409d5469aed47d19e7908d19bd194493aThomas Graf 17744d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_ncacheinfo 17844d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 17944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nci_confirmed; /**< Time since neighbour validty was last confirmed */ 18044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nci_used; /**< Time since neighbour entry was last ued */ 18144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nci_updated; /**< Time since last update */ 18244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nci_refcnt; /**< Reference counter */ 18344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 18444d362409d5469aed47d19e7908d19bd194493aThomas Graf 18544d362409d5469aed47d19e7908d19bd194493aThomas Graf 18644d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_neigh 18744d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 18844d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 18944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t n_family; 19044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t n_ifindex; 19144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t n_state; 19244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t n_flags; 19344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t n_type; 19444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *n_lladdr; 19544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *n_dst; 19644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t n_probes; 19744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_ncacheinfo n_cacheinfo; 19844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t n_state_mask; 19944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t n_flag_mask; 20044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 20144d362409d5469aed47d19e7908d19bd194493aThomas Graf 20244d362409d5469aed47d19e7908d19bd194493aThomas Graf 20344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_addr_cacheinfo 20444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 20544d362409d5469aed47d19e7908d19bd194493aThomas Graf /* Preferred lifetime in seconds */ 20644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t aci_prefered; 20744d362409d5469aed47d19e7908d19bd194493aThomas Graf 20844d362409d5469aed47d19e7908d19bd194493aThomas Graf /* Valid lifetime in seconds */ 20944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t aci_valid; 21044d362409d5469aed47d19e7908d19bd194493aThomas Graf 21144d362409d5469aed47d19e7908d19bd194493aThomas Graf /* Timestamp of creation in 1/100s seince boottime */ 21244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t aci_cstamp; 21344d362409d5469aed47d19e7908d19bd194493aThomas Graf 21444d362409d5469aed47d19e7908d19bd194493aThomas Graf /* Timestamp of last update in 1/100s since boottime */ 21544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t aci_tstamp; 21644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 21744d362409d5469aed47d19e7908d19bd194493aThomas Graf 21844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_addr 21944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 22044d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 22144d362409d5469aed47d19e7908d19bd194493aThomas Graf 22244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t a_family; 22344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t a_prefixlen; 22444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t a_flags; 22544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t a_scope; 22644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t a_ifindex; 22744d362409d5469aed47d19e7908d19bd194493aThomas Graf 22844d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *a_peer; 22944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *a_local; 23044d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *a_bcast; 23144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *a_anycast; 23244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *a_multicast; 23344d362409d5469aed47d19e7908d19bd194493aThomas Graf 23444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_addr_cacheinfo a_cacheinfo; 23544d362409d5469aed47d19e7908d19bd194493aThomas Graf 23644d362409d5469aed47d19e7908d19bd194493aThomas Graf char a_label[IFNAMSIZ]; 23744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t a_flag_mask; 23844d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 23944d362409d5469aed47d19e7908d19bd194493aThomas Graf 24044d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_nexthop 24144d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 24244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rtnh_flags; 24344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rtnh_flag_mask; 24444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rtnh_weight; 24544d362409d5469aed47d19e7908d19bd194493aThomas Graf /* 1 byte spare */ 24644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rtnh_ifindex; 24744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * rtnh_gateway; 248535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint32_t ce_mask; /* HACK to support attr macros */ 24944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_list_head rtnh_list; 250535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint32_t rtnh_realms; 25144d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 25244d362409d5469aed47d19e7908d19bd194493aThomas Graf 25344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_route 25444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 25544d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 25644d362409d5469aed47d19e7908d19bd194493aThomas Graf 25744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_family; 25844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_dst_len; 25944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_src_len; 26044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_tos; 26144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_protocol; 26244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_scope; 26344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rt_type; 264535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint8_t rt_nmetrics; 26544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rt_flags; 26644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * rt_dst; 26744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * rt_src; 268535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint32_t rt_table; 269535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint32_t rt_iif; 27044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rt_prio; 27144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rt_metrics[RTAX_MAX]; 27244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rt_metrics_mask; 273535e83162249ed6274ba46bc72d8cc683ba20e17Thomas Graf uint32_t rt_nr_nh; 27444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * rt_pref_src; 27544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_list_head rt_nexthops; 27644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_rtcacheinfo rt_cacheinfo; 27744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rt_flag_mask; 27844d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 27944d362409d5469aed47d19e7908d19bd194493aThomas Graf 28044d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_rule 28144d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 28244d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 28344d362409d5469aed47d19e7908d19bd194493aThomas Graf 28444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t r_mark; 28544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t r_prio; 28644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t r_realms; 28744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t r_table; 28844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t r_dsfield; 28944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t r_type; 29044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t r_family; 29144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t r_src_len; 29244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t r_dst_len; 29344d362409d5469aed47d19e7908d19bd194493aThomas Graf char r_iif[IFNAMSIZ]; 29444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *r_src; 29544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *r_dst; 29644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr *r_srcmap; 29744d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 29844d362409d5469aed47d19e7908d19bd194493aThomas Graf 29944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_neightbl_parms 30044d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 30144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 30244d362409d5469aed47d19e7908d19bd194493aThomas Graf * Interface index of the device this parameter set is assigned 30344d362409d5469aed47d19e7908d19bd194493aThomas Graf * to or 0 for the default set. 30444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 30544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_ifindex; 30644d362409d5469aed47d19e7908d19bd194493aThomas Graf 30744d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 30844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Number of references to this parameter set. 30944d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 31044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_refcnt; 31144d362409d5469aed47d19e7908d19bd194493aThomas Graf 31244d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 31344d362409d5469aed47d19e7908d19bd194493aThomas Graf * Queue length for pending arp requests, i.e. the number of 31444d362409d5469aed47d19e7908d19bd194493aThomas Graf * packets which are accepted from other layers while the 31544d362409d5469aed47d19e7908d19bd194493aThomas Graf * neighbour address is still being resolved 31644d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 31744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_queue_len; 31844d362409d5469aed47d19e7908d19bd194493aThomas Graf 31944d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 32044d362409d5469aed47d19e7908d19bd194493aThomas Graf * Number of requests to send to the user level ARP daemon. 32144d362409d5469aed47d19e7908d19bd194493aThomas Graf * Specify 0 to disable. 32244d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 32344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_app_probes; 32444d362409d5469aed47d19e7908d19bd194493aThomas Graf 32544d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 32644d362409d5469aed47d19e7908d19bd194493aThomas Graf * Maximum number of retries for unicast solicitation. 32744d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 32844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_ucast_probes; 32944d362409d5469aed47d19e7908d19bd194493aThomas Graf 33044d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 33144d362409d5469aed47d19e7908d19bd194493aThomas Graf * Maximum number of retries for multicast solicitation. 33244d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 33344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_mcast_probes; 33444d362409d5469aed47d19e7908d19bd194493aThomas Graf 33544d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 33644d362409d5469aed47d19e7908d19bd194493aThomas Graf * Base value in milliseconds to ompute reachable time, see RFC2461. 33744d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 33844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_base_reachable_time; 33944d362409d5469aed47d19e7908d19bd194493aThomas Graf 34044d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 34144d362409d5469aed47d19e7908d19bd194493aThomas Graf * Actual reachable time (read-only) 34244d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 34344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_reachable_time; /* secs */ 34444d362409d5469aed47d19e7908d19bd194493aThomas Graf 34544d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 34644d362409d5469aed47d19e7908d19bd194493aThomas Graf * The time in milliseconds between retransmitted Neighbor 34744d362409d5469aed47d19e7908d19bd194493aThomas Graf * Solicitation messages. 34844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 34944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_retrans_time; 35044d362409d5469aed47d19e7908d19bd194493aThomas Graf 35144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 35244d362409d5469aed47d19e7908d19bd194493aThomas Graf * Interval in milliseconds to check for stale neighbour 35344d362409d5469aed47d19e7908d19bd194493aThomas Graf * entries. 35444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 35544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_gc_stale_time; /* secs */ 35644d362409d5469aed47d19e7908d19bd194493aThomas Graf 35744d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 35844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Delay in milliseconds for the first time probe if 35944d362409d5469aed47d19e7908d19bd194493aThomas Graf * the neighbour is reachable. 36044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 36144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_probe_delay; /* secs */ 36244d362409d5469aed47d19e7908d19bd194493aThomas Graf 36344d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 36444d362409d5469aed47d19e7908d19bd194493aThomas Graf * Maximum delay in milliseconds of an answer to a neighbour 36544d362409d5469aed47d19e7908d19bd194493aThomas Graf * solicitation message. 36644d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 36744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_anycast_delay; 36844d362409d5469aed47d19e7908d19bd194493aThomas Graf 36944d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 37044d362409d5469aed47d19e7908d19bd194493aThomas Graf * Minimum age in milliseconds before a neighbour entry 37144d362409d5469aed47d19e7908d19bd194493aThomas Graf * may be replaced. 37244d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 37344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_locktime; 37444d362409d5469aed47d19e7908d19bd194493aThomas Graf 37544d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 37644d362409d5469aed47d19e7908d19bd194493aThomas Graf * Delay in milliseconds before answering to an ARP request 37744d362409d5469aed47d19e7908d19bd194493aThomas Graf * for which a proxy ARP entry exists. 37844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 37944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t ntp_proxy_delay; 38044d362409d5469aed47d19e7908d19bd194493aThomas Graf 38144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 38244d362409d5469aed47d19e7908d19bd194493aThomas Graf * Queue length for the delayed proxy arp requests. 38344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 38444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_proxy_qlen; 38544d362409d5469aed47d19e7908d19bd194493aThomas Graf 38644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 38744d362409d5469aed47d19e7908d19bd194493aThomas Graf * Mask of available parameter attributes 38844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 38944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ntp_mask; 39044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 39144d362409d5469aed47d19e7908d19bd194493aThomas Graf 39244d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NTBLNAMSIZ 32 39344d362409d5469aed47d19e7908d19bd194493aThomas Graf 39444d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 39544d362409d5469aed47d19e7908d19bd194493aThomas Graf * Neighbour table 39644d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup neightbl 39744d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 39844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_neightbl 39944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 40044d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 40144d362409d5469aed47d19e7908d19bd194493aThomas Graf 40244d362409d5469aed47d19e7908d19bd194493aThomas Graf char nt_name[NTBLNAMSIZ]; 40344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nt_family; 40444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nt_gc_thresh1; 40544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nt_gc_thresh2; 40644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nt_gc_thresh3; 40744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t nt_gc_interval; 40844d362409d5469aed47d19e7908d19bd194493aThomas Graf struct ndt_config nt_config; 40944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_neightbl_parms nt_parms; 41044d362409d5469aed47d19e7908d19bd194493aThomas Graf struct ndt_stats nt_stats; 41144d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 41244d362409d5469aed47d19e7908d19bd194493aThomas Graf 41344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_ratespec 41444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 41544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t rs_cell_log; 41644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t rs_feature; 41744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t rs_addend; 41844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t rs_mpu; 41944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t rs_rate; 42044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 42144d362409d5469aed47d19e7908d19bd194493aThomas Graf 42244d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_tstats 42344d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 42444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 42544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t bytes; 42644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t packets; 42744d362409d5469aed47d19e7908d19bd194493aThomas Graf } tcs_basic; 42844d362409d5469aed47d19e7908d19bd194493aThomas Graf 42944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 43044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t bps; 43144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pps; 43244d362409d5469aed47d19e7908d19bd194493aThomas Graf } tcs_rate_est; 43344d362409d5469aed47d19e7908d19bd194493aThomas Graf 43444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 43544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qlen; 43644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t backlog; 43744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t drops; 43844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t requeues; 43944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t overlimits; 44044d362409d5469aed47d19e7908d19bd194493aThomas Graf } tcs_queue; 44144d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 44244d362409d5469aed47d19e7908d19bd194493aThomas Graf 44344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define TCKINDSIZ 32 44444d362409d5469aed47d19e7908d19bd194493aThomas Graf 44544d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_TCA_GENERIC(pre) \ 44644d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON \ 44744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pre ##_family; \ 44844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pre ##_ifindex; \ 44944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pre ##_handle; \ 45044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pre ##_parent; \ 45144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t pre ##_info; \ 45244d362409d5469aed47d19e7908d19bd194493aThomas Graf char pre ##_kind[TCKINDSIZ]; \ 45344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * pre ##_opts; \ 45444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t pre ##_stats[RTNL_TC_STATS_MAX+1]; \ 45544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * pre ##_xstats; \ 45644d362409d5469aed47d19e7908d19bd194493aThomas Graf void * pre ##_subdata; \ 45744d362409d5469aed47d19e7908d19bd194493aThomas Graf 45844d362409d5469aed47d19e7908d19bd194493aThomas Graf 45944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_tca 46044d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 46144d362409d5469aed47d19e7908d19bd194493aThomas Graf NL_TCA_GENERIC(tc); 46244d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 46344d362409d5469aed47d19e7908d19bd194493aThomas Graf 46444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_qdisc 46544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 46644d362409d5469aed47d19e7908d19bd194493aThomas Graf NL_TCA_GENERIC(q); 46744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_qdisc_ops *q_ops; 46844d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 46944d362409d5469aed47d19e7908d19bd194493aThomas Graf 47044d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_class 47144d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 47244d362409d5469aed47d19e7908d19bd194493aThomas Graf NL_TCA_GENERIC(c); 47344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_class_ops *c_ops; 47444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 47544d362409d5469aed47d19e7908d19bd194493aThomas Graf 47644d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_cls 47744d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 47844d362409d5469aed47d19e7908d19bd194493aThomas Graf NL_TCA_GENERIC(c); 4795d92f9c03d85cefee5afe7f40d7ea69dfde4cf77Thomas Graf uint16_t c_prio; 4805d92f9c03d85cefee5afe7f40d7ea69dfde4cf77Thomas Graf uint16_t c_protocol; 48144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_cls_ops *c_ops; 48244d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 48344d362409d5469aed47d19e7908d19bd194493aThomas Graf 48444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_u32 48544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 48644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cu_divisor; 48744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cu_hash; 48844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cu_classid; 48944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cu_link; 49044d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cu_pcnt; 49144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cu_selector; 49244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cu_act; 49344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cu_police; 49444d362409d5469aed47d19e7908d19bd194493aThomas Graf char cu_indev[IFNAMSIZ]; 49544d362409d5469aed47d19e7908d19bd194493aThomas Graf int cu_mask; 49644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 49744d362409d5469aed47d19e7908d19bd194493aThomas Graf 49844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_fw 49944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 50044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cf_classid; 50144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cf_act; 50244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_data * cf_police; 50344d362409d5469aed47d19e7908d19bd194493aThomas Graf char cf_indev[IFNAMSIZ]; 50444d362409d5469aed47d19e7908d19bd194493aThomas Graf int cf_mask; 50544d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 50644d362409d5469aed47d19e7908d19bd194493aThomas Graf 50744d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_dsmark_qdisc 50844d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 50944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t qdm_indices; 51044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t qdm_default_index; 51144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qdm_set_tc_index; 51244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qdm_mask; 51344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 51444d362409d5469aed47d19e7908d19bd194493aThomas Graf 51544d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_dsmark_class 51644d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 51744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t cdm_bmask; 51844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t cdm_value; 51944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t cdm_mask; 52044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 52144d362409d5469aed47d19e7908d19bd194493aThomas Graf 52244d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_fifo 52344d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 52444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qf_limit; 52544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qf_mask; 52644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 52744d362409d5469aed47d19e7908d19bd194493aThomas Graf 52844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_prio 52944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 53044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qp_bands; 53144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t qp_priomap[TC_PRIO_MAX+1]; 53244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qp_mask; 53344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 53444d362409d5469aed47d19e7908d19bd194493aThomas Graf 53544d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_tbf 53644d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 53744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_limit; 53844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_mpu; 53944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_ratespec qt_rate; 54044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_rate_bucket; 54144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_rate_txtime; 54244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_ratespec qt_peakrate; 54344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_peakrate_bucket; 54444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_peakrate_txtime; 54544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qt_mask; 54644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 54744d362409d5469aed47d19e7908d19bd194493aThomas Graf 54844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_sfq 54944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 55044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_quantum; 55144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_perturb; 55244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_limit; 55344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_divisor; 55444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_flows; 55544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qs_mask; 55644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 55744d362409d5469aed47d19e7908d19bd194493aThomas Graf 55844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_netem_corr 55944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 56044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nmc_delay; 56144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nmc_loss; 56244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nmc_duplicate; 56344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 56444d362409d5469aed47d19e7908d19bd194493aThomas Graf 56544d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_netem_reo 56644d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 56744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nmro_probability; 56844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t nmro_correlation; 56944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 57044d362409d5469aed47d19e7908d19bd194493aThomas Graf 571241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollarstruct rtnl_netem_crpt 572241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar{ 573241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar uint32_t nmcr_probability; 574241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar uint32_t nmcr_correlation; 575241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar}; 576241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar 577241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollarstruct rtnl_netem_dist 578241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar{ 579241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar int16_t * dist_data; 580241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar size_t dist_size; 581241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar}; 582241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar 58344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_netem 58444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 58544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_latency; 58644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_limit; 58744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_loss; 58844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_gap; 58944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_duplicate; 59044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_jitter; 59144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qnm_mask; 59244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_netem_corr qnm_corr; 59344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_netem_reo qnm_ro; 594241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar struct rtnl_netem_crpt qnm_crpt; 595241b2b83ba5672f5c86154d29eeb8ef4c7c6e9b4Tad Kollar struct rtnl_netem_dist qnm_dist; 59644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 59744d362409d5469aed47d19e7908d19bd194493aThomas Graf 59844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_htb_qdisc 59944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 60044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qh_rate2quantum; 60144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qh_defcls; 60244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qh_mask; 60344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 60444d362409d5469aed47d19e7908d19bd194493aThomas Graf 60544d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_htb_class 60644d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 60744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_prio; 60844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_mtu; 60944d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_ratespec ch_rate; 61044d362409d5469aed47d19e7908d19bd194493aThomas Graf struct rtnl_ratespec ch_ceil; 61144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_rbuffer; 61244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_cbuffer; 61344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_quantum; 61444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t ch_overhead; 61544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t ch_mpu; 61644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ch_mask; 61744d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 61844d362409d5469aed47d19e7908d19bd194493aThomas Graf 61944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_cbq 62044d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 62144d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_cbq_lssopt cbq_lss; 62244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_ratespec cbq_rate; 62344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_cbq_wrropt cbq_wrr; 62444d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_cbq_ovl cbq_ovl; 62544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_cbq_fopt cbq_fopt; 62644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct tc_cbq_police cbq_police; 62744d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 62844d362409d5469aed47d19e7908d19bd194493aThomas Graf 62944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_red 63044d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 63144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qr_limit; 63244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qr_qth_min; 63344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qr_qth_max; 63444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t qr_flags; 63544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t qr_wlog; 63644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t qr_plog; 63744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t qr_scell_log; 63844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t qr_mask; 63944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 64044d362409d5469aed47d19e7908d19bd194493aThomas Graf 64144d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct flnl_request 64244d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 64344d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 64444d362409d5469aed47d19e7908d19bd194493aThomas Graf 64544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * lr_addr; 64644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t lr_fwmark; 64744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t lr_tos; 64844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t lr_scope; 64944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t lr_table; 65044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 65144d362409d5469aed47d19e7908d19bd194493aThomas Graf 65244d362409d5469aed47d19e7908d19bd194493aThomas Graf 65344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct flnl_result 65444d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 65544d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 65644d362409d5469aed47d19e7908d19bd194493aThomas Graf 65744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct flnl_request * fr_req; 65844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t fr_table_id; 65944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t fr_prefixlen; 66044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t fr_nh_sel; 66144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t fr_type; 66244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t fr_scope; 66344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t fr_error; 66444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 66544d362409d5469aed47d19e7908d19bd194493aThomas Graf 66644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define GENL_OP_HAS_POLICY 1 66744d362409d5469aed47d19e7908d19bd194493aThomas Graf#define GENL_OP_HAS_DOIT 2 66844d362409d5469aed47d19e7908d19bd194493aThomas Graf#define GENL_OP_HAS_DUMPIT 4 66944d362409d5469aed47d19e7908d19bd194493aThomas Graf 67044d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct genl_family_op 67144d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 67244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t o_id; 67344d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t o_flags; 67444d362409d5469aed47d19e7908d19bd194493aThomas Graf 67544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_list_head o_list; 67644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 67744d362409d5469aed47d19e7908d19bd194493aThomas Graf 67844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct genl_family 67944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 68044d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 68144d362409d5469aed47d19e7908d19bd194493aThomas Graf 68244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t gf_id; 68344d362409d5469aed47d19e7908d19bd194493aThomas Graf char gf_name[GENL_NAMSIZ]; 68444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t gf_version; 68544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t gf_hdrsize; 68644d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t gf_maxattr; 68744d362409d5469aed47d19e7908d19bd194493aThomas Graf 68844d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_list_head gf_ops; 68944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 69044d362409d5469aed47d19e7908d19bd194493aThomas Graf 69144d362409d5469aed47d19e7908d19bd194493aThomas Grafunion nfnl_ct_proto 69244d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 69344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 69444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t src; 69544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t dst; 69644d362409d5469aed47d19e7908d19bd194493aThomas Graf } port; 69744d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 69844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint16_t id; 69944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t type; 70044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t code; 70144d362409d5469aed47d19e7908d19bd194493aThomas Graf } icmp; 70244d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 70344d362409d5469aed47d19e7908d19bd194493aThomas Graf 70444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nfnl_ct_dir { 70544d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * src; 70644d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nl_addr * dst; 70744d362409d5469aed47d19e7908d19bd194493aThomas Graf union nfnl_ct_proto proto; 70844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t packets; 70944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint64_t bytes; 71044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 71144d362409d5469aed47d19e7908d19bd194493aThomas Graf 71244d362409d5469aed47d19e7908d19bd194493aThomas Grafunion nfnl_ct_protoinfo { 71344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct { 71444d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t state; 71544d362409d5469aed47d19e7908d19bd194493aThomas Graf } tcp; 71644d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 71744d362409d5469aed47d19e7908d19bd194493aThomas Graf 71844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nfnl_ct { 71944d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 72044d362409d5469aed47d19e7908d19bd194493aThomas Graf 72144d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t ct_family; 72244d362409d5469aed47d19e7908d19bd194493aThomas Graf uint8_t ct_proto; 72344d362409d5469aed47d19e7908d19bd194493aThomas Graf union nfnl_ct_protoinfo ct_protoinfo; 72444d362409d5469aed47d19e7908d19bd194493aThomas Graf 72544d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ct_status; 726cbe8902265ccc9f6aa6453aeb3a2a4631ed0eb01Philip Craig uint32_t ct_status_mask; 72744d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ct_timeout; 72844d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ct_mark; 72944d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ct_use; 73044d362409d5469aed47d19e7908d19bd194493aThomas Graf uint32_t ct_id; 73144d362409d5469aed47d19e7908d19bd194493aThomas Graf 73244d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nfnl_ct_dir ct_orig; 73344d362409d5469aed47d19e7908d19bd194493aThomas Graf struct nfnl_ct_dir ct_repl; 73444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 73544d362409d5469aed47d19e7908d19bd194493aThomas Graf 73644d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nfnl_log { 73744d362409d5469aed47d19e7908d19bd194493aThomas Graf NLHDR_COMMON 73844d362409d5469aed47d19e7908d19bd194493aThomas Graf 7392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint16_t log_group; 7402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint8_t log_copy_mode; 7412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_copy_range; 7422f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_flush_timeout; 7432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_alloc_size; 7442f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_queue_threshold; 7452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_flags; 7462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_flag_mask; 7472f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy}; 7482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 7492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardystruct nfnl_log_msg { 7502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy NLHDR_COMMON 7512f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 7522f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint8_t log_msg_family; 7532f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint8_t log_msg_hook; 7542f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint16_t log_msg_hwproto; 7552f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_mark; 7562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct timeval log_msg_timestamp; 7572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_indev; 7582f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_outdev; 7592f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_physindev; 7602f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_physoutdev; 7612f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint8_t log_msg_hwaddr[8]; 7622f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy int log_msg_hwaddr_len; 7632f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy void * log_msg_payload; 7642f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy int log_msg_payload_len; 7652f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy char * log_msg_prefix; 7662f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_uid; 7672f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_gid; 7682f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_seq; 7692f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy uint32_t log_msg_seq_global; 77044d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 77144d362409d5469aed47d19e7908d19bd194493aThomas Graf 772e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardystruct nfnl_queue { 773e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy NLHDR_COMMON 774e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy 775e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint16_t queue_group; 776e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_maxlen; 777e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_copy_range; 778e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint8_t queue_copy_mode; 779e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy}; 780e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy 781e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardystruct nfnl_queue_msg { 782e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy NLHDR_COMMON 783e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy 784e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint16_t queue_msg_group; 785e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint8_t queue_msg_family; 786e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint8_t queue_msg_hook; 787e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint16_t queue_msg_hwproto; 788e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_packetid; 789e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_mark; 790e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy struct timeval queue_msg_timestamp; 791e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_indev; 792e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_outdev; 793e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_physindev; 794e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_physoutdev; 795e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint8_t queue_msg_hwaddr[8]; 796e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy int queue_msg_hwaddr_len; 797e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy void * queue_msg_payload; 798e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy int queue_msg_payload_len; 799e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy uint32_t queue_msg_verdict; 800e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy}; 801e72cb033f2f7323b63f3e640a37e7a75558ab128Patrick McHardy 80244d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 803