PageRenderTime 37ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/libnl-3.2.7/include/netlink-types.h

#
C Header | 847 lines | 640 code | 123 blank | 84 comment | 0 complexity | 8142a3fceb4cc7937ba91a35a425a3d3 MD5 | raw file
Possible License(s): LGPL-2.1
  1. /*
  2. * netlink-types.h Netlink Types (Private)
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation version 2.1
  7. * of the License.
  8. *
  9. * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
  10. */
  11. #ifndef NETLINK_LOCAL_TYPES_H_
  12. #define NETLINK_LOCAL_TYPES_H_
  13. #include <netlink/list.h>
  14. #include <netlink/route/link.h>
  15. #include <netlink/route/qdisc.h>
  16. #include <netlink/route/rtnl.h>
  17. #include <netlink/route/route.h>
  18. #include <netlink/route/tc-api.h>
  19. #define NL_SOCK_BUFSIZE_SET (1<<0)
  20. #define NL_SOCK_PASSCRED (1<<1)
  21. #define NL_OWN_PORT (1<<2)
  22. #define NL_MSG_PEEK (1<<3)
  23. #define NL_NO_AUTO_ACK (1<<4)
  24. #define NL_MSG_CRED_PRESENT 1
  25. struct nl_cache_ops;
  26. struct nl_sock;
  27. struct nl_object;
  28. struct nl_cb
  29. {
  30. nl_recvmsg_msg_cb_t cb_set[NL_CB_TYPE_MAX+1];
  31. void * cb_args[NL_CB_TYPE_MAX+1];
  32. nl_recvmsg_err_cb_t cb_err;
  33. void * cb_err_arg;
  34. /** May be used to replace nl_recvmsgs with your own implementation
  35. * in all internal calls to nl_recvmsgs. */
  36. int (*cb_recvmsgs_ow)(struct nl_sock *,
  37. struct nl_cb *);
  38. /** Overwrite internal calls to nl_recv, must return the number of
  39. * octets read and allocate a buffer for the received data. */
  40. int (*cb_recv_ow)(struct nl_sock *,
  41. struct sockaddr_nl *,
  42. unsigned char **,
  43. struct ucred **);
  44. /** Overwrites internal calls to nl_send, must send the netlink
  45. * message. */
  46. int (*cb_send_ow)(struct nl_sock *,
  47. struct nl_msg *);
  48. int cb_refcnt;
  49. };
  50. struct nl_sock
  51. {
  52. struct sockaddr_nl s_local;
  53. struct sockaddr_nl s_peer;
  54. int s_fd;
  55. int s_proto;
  56. unsigned int s_seq_next;
  57. unsigned int s_seq_expect;
  58. int s_flags;
  59. struct nl_cb * s_cb;
  60. };
  61. struct nl_cache
  62. {
  63. struct nl_list_head c_items;
  64. int c_nitems;
  65. int c_iarg1;
  66. int c_iarg2;
  67. struct nl_cache_ops * c_ops;
  68. };
  69. struct nl_cache_assoc
  70. {
  71. struct nl_cache * ca_cache;
  72. change_func_t ca_change;
  73. void * ca_change_data;
  74. };
  75. struct nl_cache_mngr
  76. {
  77. int cm_protocol;
  78. int cm_flags;
  79. int cm_nassocs;
  80. struct nl_sock * cm_handle;
  81. struct nl_cache_assoc * cm_assocs;
  82. };
  83. struct nl_parser_param;
  84. #define LOOSE_COMPARISON 1
  85. #define NL_OBJ_MARK 1
  86. struct nl_data
  87. {
  88. size_t d_size;
  89. void * d_data;
  90. };
  91. struct nl_addr
  92. {
  93. int a_family;
  94. unsigned int a_maxsize;
  95. unsigned int a_len;
  96. int a_prefixlen;
  97. int a_refcnt;
  98. char a_addr[0];
  99. };
  100. struct nl_msg
  101. {
  102. int nm_protocol;
  103. int nm_flags;
  104. struct sockaddr_nl nm_src;
  105. struct sockaddr_nl nm_dst;
  106. struct ucred nm_creds;
  107. struct nlmsghdr * nm_nlh;
  108. size_t nm_size;
  109. int nm_refcnt;
  110. };
  111. struct rtnl_link_map
  112. {
  113. uint64_t lm_mem_start;
  114. uint64_t lm_mem_end;
  115. uint64_t lm_base_addr;
  116. uint16_t lm_irq;
  117. uint8_t lm_dma;
  118. uint8_t lm_port;
  119. };
  120. #define IFQDISCSIZ 32
  121. struct rtnl_link
  122. {
  123. NLHDR_COMMON
  124. char l_name[IFNAMSIZ];
  125. uint32_t l_family;
  126. uint32_t l_arptype;
  127. uint32_t l_index;
  128. uint32_t l_flags;
  129. uint32_t l_change;
  130. uint32_t l_mtu;
  131. uint32_t l_link;
  132. uint32_t l_txqlen;
  133. uint32_t l_weight;
  134. uint32_t l_master;
  135. struct nl_addr * l_addr;
  136. struct nl_addr * l_bcast;
  137. char l_qdisc[IFQDISCSIZ];
  138. struct rtnl_link_map l_map;
  139. uint64_t l_stats[RTNL_LINK_STATS_MAX+1];
  140. uint32_t l_flag_mask;
  141. uint32_t l_num_vf;
  142. uint8_t l_operstate;
  143. uint8_t l_linkmode;
  144. /* 2 byte hole */
  145. char * l_info_kind;
  146. struct rtnl_link_info_ops * l_info_ops;
  147. void * l_af_data[AF_MAX];
  148. void * l_info;
  149. char * l_ifalias;
  150. };
  151. struct rtnl_ncacheinfo
  152. {
  153. uint32_t nci_confirmed; /**< Time since neighbour validty was last confirmed */
  154. uint32_t nci_used; /**< Time since neighbour entry was last ued */
  155. uint32_t nci_updated; /**< Time since last update */
  156. uint32_t nci_refcnt; /**< Reference counter */
  157. };
  158. struct rtnl_neigh
  159. {
  160. NLHDR_COMMON
  161. uint32_t n_family;
  162. uint32_t n_ifindex;
  163. uint16_t n_state;
  164. uint8_t n_flags;
  165. uint8_t n_type;
  166. struct nl_addr *n_lladdr;
  167. struct nl_addr *n_dst;
  168. uint32_t n_probes;
  169. struct rtnl_ncacheinfo n_cacheinfo;
  170. uint32_t n_state_mask;
  171. uint32_t n_flag_mask;
  172. };
  173. struct rtnl_addr_cacheinfo
  174. {
  175. /* Preferred lifetime in seconds */
  176. uint32_t aci_prefered;
  177. /* Valid lifetime in seconds */
  178. uint32_t aci_valid;
  179. /* Timestamp of creation in 1/100s seince boottime */
  180. uint32_t aci_cstamp;
  181. /* Timestamp of last update in 1/100s since boottime */
  182. uint32_t aci_tstamp;
  183. };
  184. struct rtnl_addr
  185. {
  186. NLHDR_COMMON
  187. uint8_t a_family;
  188. uint8_t a_prefixlen;
  189. uint8_t a_flags;
  190. uint8_t a_scope;
  191. uint32_t a_ifindex;
  192. struct nl_addr *a_peer;
  193. struct nl_addr *a_local;
  194. struct nl_addr *a_bcast;
  195. struct nl_addr *a_anycast;
  196. struct nl_addr *a_multicast;
  197. struct rtnl_addr_cacheinfo a_cacheinfo;
  198. char a_label[IFNAMSIZ];
  199. uint32_t a_flag_mask;
  200. struct rtnl_link *a_link;
  201. };
  202. struct rtnl_nexthop
  203. {
  204. uint8_t rtnh_flags;
  205. uint8_t rtnh_flag_mask;
  206. uint8_t rtnh_weight;
  207. /* 1 byte spare */
  208. uint32_t rtnh_ifindex;
  209. struct nl_addr * rtnh_gateway;
  210. uint32_t ce_mask; /* HACK to support attr macros */
  211. struct nl_list_head rtnh_list;
  212. uint32_t rtnh_realms;
  213. };
  214. struct rtnl_route
  215. {
  216. NLHDR_COMMON
  217. uint8_t rt_family;
  218. uint8_t rt_dst_len;
  219. uint8_t rt_src_len;
  220. uint8_t rt_tos;
  221. uint8_t rt_protocol;
  222. uint8_t rt_scope;
  223. uint8_t rt_type;
  224. uint8_t rt_nmetrics;
  225. uint32_t rt_flags;
  226. struct nl_addr * rt_dst;
  227. struct nl_addr * rt_src;
  228. uint32_t rt_table;
  229. uint32_t rt_iif;
  230. uint32_t rt_prio;
  231. uint32_t rt_metrics[RTAX_MAX];
  232. uint32_t rt_metrics_mask;
  233. uint32_t rt_nr_nh;
  234. struct nl_addr * rt_pref_src;
  235. struct nl_list_head rt_nexthops;
  236. struct rtnl_rtcacheinfo rt_cacheinfo;
  237. uint32_t rt_flag_mask;
  238. };
  239. struct rtnl_rule
  240. {
  241. NLHDR_COMMON
  242. uint8_t r_family;
  243. uint8_t r_action;
  244. uint8_t r_dsfield; /* ipv4 only */
  245. uint8_t r_unused;
  246. uint32_t r_table;
  247. uint32_t r_flags;
  248. uint32_t r_prio;
  249. uint32_t r_mark;
  250. uint32_t r_mask;
  251. uint32_t r_goto;
  252. uint32_t r_flow; /* ipv4 only */
  253. struct nl_addr *r_src;
  254. struct nl_addr *r_dst;
  255. char r_iifname[IFNAMSIZ];
  256. char r_oifname[IFNAMSIZ];
  257. };
  258. struct rtnl_neightbl_parms
  259. {
  260. /**
  261. * Interface index of the device this parameter set is assigned
  262. * to or 0 for the default set.
  263. */
  264. uint32_t ntp_ifindex;
  265. /**
  266. * Number of references to this parameter set.
  267. */
  268. uint32_t ntp_refcnt;
  269. /**
  270. * Queue length for pending arp requests, i.e. the number of
  271. * packets which are accepted from other layers while the
  272. * neighbour address is still being resolved
  273. */
  274. uint32_t ntp_queue_len;
  275. /**
  276. * Number of requests to send to the user level ARP daemon.
  277. * Specify 0 to disable.
  278. */
  279. uint32_t ntp_app_probes;
  280. /**
  281. * Maximum number of retries for unicast solicitation.
  282. */
  283. uint32_t ntp_ucast_probes;
  284. /**
  285. * Maximum number of retries for multicast solicitation.
  286. */
  287. uint32_t ntp_mcast_probes;
  288. /**
  289. * Base value in milliseconds to ompute reachable time, see RFC2461.
  290. */
  291. uint64_t ntp_base_reachable_time;
  292. /**
  293. * Actual reachable time (read-only)
  294. */
  295. uint64_t ntp_reachable_time; /* secs */
  296. /**
  297. * The time in milliseconds between retransmitted Neighbor
  298. * Solicitation messages.
  299. */
  300. uint64_t ntp_retrans_time;
  301. /**
  302. * Interval in milliseconds to check for stale neighbour
  303. * entries.
  304. */
  305. uint64_t ntp_gc_stale_time; /* secs */
  306. /**
  307. * Delay in milliseconds for the first time probe if
  308. * the neighbour is reachable.
  309. */
  310. uint64_t ntp_probe_delay; /* secs */
  311. /**
  312. * Maximum delay in milliseconds of an answer to a neighbour
  313. * solicitation message.
  314. */
  315. uint64_t ntp_anycast_delay;
  316. /**
  317. * Minimum age in milliseconds before a neighbour entry
  318. * may be replaced.
  319. */
  320. uint64_t ntp_locktime;
  321. /**
  322. * Delay in milliseconds before answering to an ARP request
  323. * for which a proxy ARP entry exists.
  324. */
  325. uint64_t ntp_proxy_delay;
  326. /**
  327. * Queue length for the delayed proxy arp requests.
  328. */
  329. uint32_t ntp_proxy_qlen;
  330. /**
  331. * Mask of available parameter attributes
  332. */
  333. uint32_t ntp_mask;
  334. };
  335. #define NTBLNAMSIZ 32
  336. /**
  337. * Neighbour table
  338. * @ingroup neightbl
  339. */
  340. struct rtnl_neightbl
  341. {
  342. NLHDR_COMMON
  343. char nt_name[NTBLNAMSIZ];
  344. uint32_t nt_family;
  345. uint32_t nt_gc_thresh1;
  346. uint32_t nt_gc_thresh2;
  347. uint32_t nt_gc_thresh3;
  348. uint64_t nt_gc_interval;
  349. struct ndt_config nt_config;
  350. struct rtnl_neightbl_parms nt_parms;
  351. struct ndt_stats nt_stats;
  352. };
  353. struct rtnl_ratespec
  354. {
  355. uint8_t rs_cell_log;
  356. uint16_t rs_overhead;
  357. int16_t rs_cell_align;
  358. uint16_t rs_mpu;
  359. uint32_t rs_rate;
  360. };
  361. struct rtnl_tstats
  362. {
  363. struct {
  364. uint64_t bytes;
  365. uint64_t packets;
  366. } tcs_basic;
  367. struct {
  368. uint32_t bps;
  369. uint32_t pps;
  370. } tcs_rate_est;
  371. struct {
  372. uint32_t qlen;
  373. uint32_t backlog;
  374. uint32_t drops;
  375. uint32_t requeues;
  376. uint32_t overlimits;
  377. } tcs_queue;
  378. };
  379. #define TCKINDSIZ 32
  380. #define NL_TC_GENERIC(pre) \
  381. NLHDR_COMMON \
  382. uint32_t pre ##_family; \
  383. uint32_t pre ##_ifindex; \
  384. uint32_t pre ##_handle; \
  385. uint32_t pre ##_parent; \
  386. uint32_t pre ##_info; \
  387. uint32_t pre ##_mtu; \
  388. uint32_t pre ##_mpu; \
  389. uint32_t pre ##_overhead; \
  390. uint32_t pre ##_linktype; \
  391. char pre ##_kind[TCKINDSIZ]; \
  392. struct nl_data * pre ##_opts; \
  393. uint64_t pre ##_stats[RTNL_TC_STATS_MAX+1]; \
  394. struct nl_data * pre ##_xstats; \
  395. struct nl_data * pre ##_subdata; \
  396. struct rtnl_link * pre ##_link; \
  397. struct rtnl_tc_ops * pre ##_ops; \
  398. enum rtnl_tc_type pre ##_type
  399. struct rtnl_tc
  400. {
  401. NL_TC_GENERIC(tc);
  402. };
  403. struct rtnl_qdisc
  404. {
  405. NL_TC_GENERIC(q);
  406. };
  407. struct rtnl_class
  408. {
  409. NL_TC_GENERIC(c);
  410. };
  411. struct rtnl_cls
  412. {
  413. NL_TC_GENERIC(c);
  414. uint16_t c_prio;
  415. uint16_t c_protocol;
  416. };
  417. struct rtnl_u32
  418. {
  419. uint32_t cu_divisor;
  420. uint32_t cu_hash;
  421. uint32_t cu_classid;
  422. uint32_t cu_link;
  423. struct nl_data * cu_pcnt;
  424. struct nl_data * cu_selector;
  425. struct nl_data * cu_act;
  426. struct nl_data * cu_police;
  427. char cu_indev[IFNAMSIZ];
  428. int cu_mask;
  429. };
  430. struct rtnl_cgroup
  431. {
  432. struct rtnl_ematch_tree *cg_ematch;
  433. int cg_mask;
  434. };
  435. struct rtnl_fw
  436. {
  437. uint32_t cf_classid;
  438. struct nl_data * cf_act;
  439. struct nl_data * cf_police;
  440. char cf_indev[IFNAMSIZ];
  441. int cf_mask;
  442. };
  443. struct rtnl_ematch
  444. {
  445. uint16_t e_id;
  446. uint16_t e_kind;
  447. uint16_t e_flags;
  448. uint16_t e_index;
  449. size_t e_datalen;
  450. struct nl_list_head e_childs;
  451. struct nl_list_head e_list;
  452. struct rtnl_ematch_ops *e_ops;
  453. void * e_data;
  454. };
  455. struct rtnl_ematch_tree
  456. {
  457. uint16_t et_progid;
  458. struct nl_list_head et_list;
  459. };
  460. struct rtnl_dsmark_qdisc
  461. {
  462. uint16_t qdm_indices;
  463. uint16_t qdm_default_index;
  464. uint32_t qdm_set_tc_index;
  465. uint32_t qdm_mask;
  466. };
  467. struct rtnl_dsmark_class
  468. {
  469. uint8_t cdm_bmask;
  470. uint8_t cdm_value;
  471. uint32_t cdm_mask;
  472. };
  473. struct rtnl_fifo
  474. {
  475. uint32_t qf_limit;
  476. uint32_t qf_mask;
  477. };
  478. struct rtnl_prio
  479. {
  480. uint32_t qp_bands;
  481. uint8_t qp_priomap[TC_PRIO_MAX+1];
  482. uint32_t qp_mask;
  483. };
  484. struct rtnl_tbf
  485. {
  486. uint32_t qt_limit;
  487. struct rtnl_ratespec qt_rate;
  488. uint32_t qt_rate_bucket;
  489. uint32_t qt_rate_txtime;
  490. struct rtnl_ratespec qt_peakrate;
  491. uint32_t qt_peakrate_bucket;
  492. uint32_t qt_peakrate_txtime;
  493. uint32_t qt_mask;
  494. };
  495. struct rtnl_sfq
  496. {
  497. uint32_t qs_quantum;
  498. uint32_t qs_perturb;
  499. uint32_t qs_limit;
  500. uint32_t qs_divisor;
  501. uint32_t qs_flows;
  502. uint32_t qs_mask;
  503. };
  504. struct rtnl_netem_corr
  505. {
  506. uint32_t nmc_delay;
  507. uint32_t nmc_loss;
  508. uint32_t nmc_duplicate;
  509. };
  510. struct rtnl_netem_reo
  511. {
  512. uint32_t nmro_probability;
  513. uint32_t nmro_correlation;
  514. };
  515. struct rtnl_netem_crpt
  516. {
  517. uint32_t nmcr_probability;
  518. uint32_t nmcr_correlation;
  519. };
  520. struct rtnl_netem_dist
  521. {
  522. int16_t * dist_data;
  523. size_t dist_size;
  524. };
  525. struct rtnl_netem
  526. {
  527. uint32_t qnm_latency;
  528. uint32_t qnm_limit;
  529. uint32_t qnm_loss;
  530. uint32_t qnm_gap;
  531. uint32_t qnm_duplicate;
  532. uint32_t qnm_jitter;
  533. uint32_t qnm_mask;
  534. struct rtnl_netem_corr qnm_corr;
  535. struct rtnl_netem_reo qnm_ro;
  536. struct rtnl_netem_crpt qnm_crpt;
  537. struct rtnl_netem_dist qnm_dist;
  538. };
  539. struct rtnl_htb_qdisc
  540. {
  541. uint32_t qh_rate2quantum;
  542. uint32_t qh_defcls;
  543. uint32_t qh_mask;
  544. uint32_t qh_direct_pkts;
  545. };
  546. struct rtnl_htb_class
  547. {
  548. uint32_t ch_prio;
  549. struct rtnl_ratespec ch_rate;
  550. struct rtnl_ratespec ch_ceil;
  551. uint32_t ch_rbuffer;
  552. uint32_t ch_cbuffer;
  553. uint32_t ch_quantum;
  554. uint32_t ch_mask;
  555. uint32_t ch_level;
  556. };
  557. struct rtnl_cbq
  558. {
  559. struct tc_cbq_lssopt cbq_lss;
  560. struct tc_ratespec cbq_rate;
  561. struct tc_cbq_wrropt cbq_wrr;
  562. struct tc_cbq_ovl cbq_ovl;
  563. struct tc_cbq_fopt cbq_fopt;
  564. struct tc_cbq_police cbq_police;
  565. };
  566. struct rtnl_red
  567. {
  568. uint32_t qr_limit;
  569. uint32_t qr_qth_min;
  570. uint32_t qr_qth_max;
  571. uint8_t qr_flags;
  572. uint8_t qr_wlog;
  573. uint8_t qr_plog;
  574. uint8_t qr_scell_log;
  575. uint32_t qr_mask;
  576. };
  577. struct flnl_request
  578. {
  579. NLHDR_COMMON
  580. struct nl_addr * lr_addr;
  581. uint32_t lr_fwmark;
  582. uint8_t lr_tos;
  583. uint8_t lr_scope;
  584. uint8_t lr_table;
  585. };
  586. struct flnl_result
  587. {
  588. NLHDR_COMMON
  589. struct flnl_request * fr_req;
  590. uint8_t fr_table_id;
  591. uint8_t fr_prefixlen;
  592. uint8_t fr_nh_sel;
  593. uint8_t fr_type;
  594. uint8_t fr_scope;
  595. uint32_t fr_error;
  596. };
  597. #define GENL_OP_HAS_POLICY 1
  598. #define GENL_OP_HAS_DOIT 2
  599. #define GENL_OP_HAS_DUMPIT 4
  600. struct genl_family_op
  601. {
  602. uint32_t o_id;
  603. uint32_t o_flags;
  604. struct nl_list_head o_list;
  605. };
  606. struct genl_family_grp {
  607. struct genl_family *family; /* private */
  608. struct nl_list_head list; /* private */
  609. char name[GENL_NAMSIZ];
  610. u_int32_t id;
  611. };
  612. struct genl_family
  613. {
  614. NLHDR_COMMON
  615. uint16_t gf_id;
  616. char gf_name[GENL_NAMSIZ];
  617. uint32_t gf_version;
  618. uint32_t gf_hdrsize;
  619. uint32_t gf_maxattr;
  620. struct nl_list_head gf_ops;
  621. struct nl_list_head gf_mc_grps;
  622. };
  623. union nfnl_ct_proto
  624. {
  625. struct {
  626. uint16_t src;
  627. uint16_t dst;
  628. } port;
  629. struct {
  630. uint16_t id;
  631. uint8_t type;
  632. uint8_t code;
  633. } icmp;
  634. };
  635. struct nfnl_ct_dir {
  636. struct nl_addr * src;
  637. struct nl_addr * dst;
  638. union nfnl_ct_proto proto;
  639. uint64_t packets;
  640. uint64_t bytes;
  641. };
  642. union nfnl_ct_protoinfo {
  643. struct {
  644. uint8_t state;
  645. } tcp;
  646. };
  647. struct nfnl_ct {
  648. NLHDR_COMMON
  649. uint8_t ct_family;
  650. uint8_t ct_proto;
  651. union nfnl_ct_protoinfo ct_protoinfo;
  652. uint32_t ct_status;
  653. uint32_t ct_status_mask;
  654. uint32_t ct_timeout;
  655. uint32_t ct_mark;
  656. uint32_t ct_use;
  657. uint32_t ct_id;
  658. struct nfnl_ct_dir ct_orig;
  659. struct nfnl_ct_dir ct_repl;
  660. };
  661. struct nfnl_log {
  662. NLHDR_COMMON
  663. uint16_t log_group;
  664. uint8_t log_copy_mode;
  665. uint32_t log_copy_range;
  666. uint32_t log_flush_timeout;
  667. uint32_t log_alloc_size;
  668. uint32_t log_queue_threshold;
  669. uint32_t log_flags;
  670. uint32_t log_flag_mask;
  671. };
  672. struct nfnl_log_msg {
  673. NLHDR_COMMON
  674. uint8_t log_msg_family;
  675. uint8_t log_msg_hook;
  676. uint16_t log_msg_hwproto;
  677. uint32_t log_msg_mark;
  678. struct timeval log_msg_timestamp;
  679. uint32_t log_msg_indev;
  680. uint32_t log_msg_outdev;
  681. uint32_t log_msg_physindev;
  682. uint32_t log_msg_physoutdev;
  683. uint8_t log_msg_hwaddr[8];
  684. int log_msg_hwaddr_len;
  685. void * log_msg_payload;
  686. int log_msg_payload_len;
  687. char * log_msg_prefix;
  688. uint32_t log_msg_uid;
  689. uint32_t log_msg_gid;
  690. uint32_t log_msg_seq;
  691. uint32_t log_msg_seq_global;
  692. };
  693. struct nfnl_queue {
  694. NLHDR_COMMON
  695. uint16_t queue_group;
  696. uint32_t queue_maxlen;
  697. uint32_t queue_copy_range;
  698. uint8_t queue_copy_mode;
  699. };
  700. struct nfnl_queue_msg {
  701. NLHDR_COMMON
  702. uint16_t queue_msg_group;
  703. uint8_t queue_msg_family;
  704. uint8_t queue_msg_hook;
  705. uint16_t queue_msg_hwproto;
  706. uint32_t queue_msg_packetid;
  707. uint32_t queue_msg_mark;
  708. struct timeval queue_msg_timestamp;
  709. uint32_t queue_msg_indev;
  710. uint32_t queue_msg_outdev;
  711. uint32_t queue_msg_physindev;
  712. uint32_t queue_msg_physoutdev;
  713. uint8_t queue_msg_hwaddr[8];
  714. int queue_msg_hwaddr_len;
  715. void * queue_msg_payload;
  716. int queue_msg_payload_len;
  717. uint32_t queue_msg_verdict;
  718. };
  719. struct ematch_quoted {
  720. char * data;
  721. size_t len;
  722. int index;
  723. };
  724. #endif