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