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