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