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