Commit b63bbc5006a0a62fabc81c4f77e95f16ff16f340
Committed by
David S. Miller
1 parent
ca860fb39b
Exists in
master
and in
39 other branches
[NEIGH]: Move netlink neighbour table bits to linux/neighbour.h
rtnetlink_rcv_msg() is not longer required to parse attributes for the neighbour tables layer, remove dependency on obsolete and buggy rta_buf. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 3 changed files with 94 additions and 103 deletions Side-by-side Diff
include/linux/neighbour.h
... | ... | @@ -62,5 +62,99 @@ |
62 | 62 | __u32 ndm_refcnt; |
63 | 63 | }; |
64 | 64 | |
65 | +/***************************************************************** | |
66 | + * Neighbour tables specific messages. | |
67 | + * | |
68 | + * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the | |
69 | + * NLM_F_DUMP flag set. Every neighbour table configuration is | |
70 | + * spread over multiple messages to avoid running into message | |
71 | + * size limits on systems with many interfaces. The first message | |
72 | + * in the sequence transports all not device specific data such as | |
73 | + * statistics, configuration, and the default parameter set. | |
74 | + * This message is followed by 0..n messages carrying device | |
75 | + * specific parameter sets. | |
76 | + * Although the ordering should be sufficient, NDTA_NAME can be | |
77 | + * used to identify sequences. The initial message can be identified | |
78 | + * by checking for NDTA_CONFIG. The device specific messages do | |
79 | + * not contain this TLV but have NDTPA_IFINDEX set to the | |
80 | + * corresponding interface index. | |
81 | + * | |
82 | + * To change neighbour table attributes, send RTM_SETNEIGHTBL | |
83 | + * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3], | |
84 | + * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked | |
85 | + * otherwise. Device specific parameter sets can be changed by | |
86 | + * setting NDTPA_IFINDEX to the interface index of the corresponding | |
87 | + * device. | |
88 | + ****/ | |
89 | + | |
90 | +struct ndt_stats | |
91 | +{ | |
92 | + __u64 ndts_allocs; | |
93 | + __u64 ndts_destroys; | |
94 | + __u64 ndts_hash_grows; | |
95 | + __u64 ndts_res_failed; | |
96 | + __u64 ndts_lookups; | |
97 | + __u64 ndts_hits; | |
98 | + __u64 ndts_rcv_probes_mcast; | |
99 | + __u64 ndts_rcv_probes_ucast; | |
100 | + __u64 ndts_periodic_gc_runs; | |
101 | + __u64 ndts_forced_gc_runs; | |
102 | +}; | |
103 | + | |
104 | +enum { | |
105 | + NDTPA_UNSPEC, | |
106 | + NDTPA_IFINDEX, /* u32, unchangeable */ | |
107 | + NDTPA_REFCNT, /* u32, read-only */ | |
108 | + NDTPA_REACHABLE_TIME, /* u64, read-only, msecs */ | |
109 | + NDTPA_BASE_REACHABLE_TIME, /* u64, msecs */ | |
110 | + NDTPA_RETRANS_TIME, /* u64, msecs */ | |
111 | + NDTPA_GC_STALETIME, /* u64, msecs */ | |
112 | + NDTPA_DELAY_PROBE_TIME, /* u64, msecs */ | |
113 | + NDTPA_QUEUE_LEN, /* u32 */ | |
114 | + NDTPA_APP_PROBES, /* u32 */ | |
115 | + NDTPA_UCAST_PROBES, /* u32 */ | |
116 | + NDTPA_MCAST_PROBES, /* u32 */ | |
117 | + NDTPA_ANYCAST_DELAY, /* u64, msecs */ | |
118 | + NDTPA_PROXY_DELAY, /* u64, msecs */ | |
119 | + NDTPA_PROXY_QLEN, /* u32 */ | |
120 | + NDTPA_LOCKTIME, /* u64, msecs */ | |
121 | + __NDTPA_MAX | |
122 | +}; | |
123 | +#define NDTPA_MAX (__NDTPA_MAX - 1) | |
124 | + | |
125 | +struct ndtmsg | |
126 | +{ | |
127 | + __u8 ndtm_family; | |
128 | + __u8 ndtm_pad1; | |
129 | + __u16 ndtm_pad2; | |
130 | +}; | |
131 | + | |
132 | +struct ndt_config | |
133 | +{ | |
134 | + __u16 ndtc_key_len; | |
135 | + __u16 ndtc_entry_size; | |
136 | + __u32 ndtc_entries; | |
137 | + __u32 ndtc_last_flush; /* delta to now in msecs */ | |
138 | + __u32 ndtc_last_rand; /* delta to now in msecs */ | |
139 | + __u32 ndtc_hash_rnd; | |
140 | + __u32 ndtc_hash_mask; | |
141 | + __u32 ndtc_hash_chain_gc; | |
142 | + __u32 ndtc_proxy_qlen; | |
143 | +}; | |
144 | + | |
145 | +enum { | |
146 | + NDTA_UNSPEC, | |
147 | + NDTA_NAME, /* char *, unchangeable */ | |
148 | + NDTA_THRESH1, /* u32 */ | |
149 | + NDTA_THRESH2, /* u32 */ | |
150 | + NDTA_THRESH3, /* u32 */ | |
151 | + NDTA_CONFIG, /* struct ndt_config, read-only */ | |
152 | + NDTA_PARMS, /* nested TLV NDTPA_* */ | |
153 | + NDTA_STATS, /* struct ndt_stats, read-only */ | |
154 | + NDTA_GC_INTERVAL, /* u64, msecs */ | |
155 | + __NDTA_MAX | |
156 | +}; | |
157 | +#define NDTA_MAX (__NDTA_MAX - 1) | |
158 | + | |
65 | 159 | #endif |
include/linux/rtnetlink.h
... | ... | @@ -384,107 +384,6 @@ |
384 | 384 | } u; |
385 | 385 | }; |
386 | 386 | |
387 | - | |
388 | - | |
389 | -/***************************************************************** | |
390 | - * Neighbour tables specific messages. | |
391 | - * | |
392 | - * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the | |
393 | - * NLM_F_DUMP flag set. Every neighbour table configuration is | |
394 | - * spread over multiple messages to avoid running into message | |
395 | - * size limits on systems with many interfaces. The first message | |
396 | - * in the sequence transports all not device specific data such as | |
397 | - * statistics, configuration, and the default parameter set. | |
398 | - * This message is followed by 0..n messages carrying device | |
399 | - * specific parameter sets. | |
400 | - * Although the ordering should be sufficient, NDTA_NAME can be | |
401 | - * used to identify sequences. The initial message can be identified | |
402 | - * by checking for NDTA_CONFIG. The device specific messages do | |
403 | - * not contain this TLV but have NDTPA_IFINDEX set to the | |
404 | - * corresponding interface index. | |
405 | - * | |
406 | - * To change neighbour table attributes, send RTM_SETNEIGHTBL | |
407 | - * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3], | |
408 | - * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked | |
409 | - * otherwise. Device specific parameter sets can be changed by | |
410 | - * setting NDTPA_IFINDEX to the interface index of the corresponding | |
411 | - * device. | |
412 | - ****/ | |
413 | - | |
414 | -struct ndt_stats | |
415 | -{ | |
416 | - __u64 ndts_allocs; | |
417 | - __u64 ndts_destroys; | |
418 | - __u64 ndts_hash_grows; | |
419 | - __u64 ndts_res_failed; | |
420 | - __u64 ndts_lookups; | |
421 | - __u64 ndts_hits; | |
422 | - __u64 ndts_rcv_probes_mcast; | |
423 | - __u64 ndts_rcv_probes_ucast; | |
424 | - __u64 ndts_periodic_gc_runs; | |
425 | - __u64 ndts_forced_gc_runs; | |
426 | -}; | |
427 | - | |
428 | -enum { | |
429 | - NDTPA_UNSPEC, | |
430 | - NDTPA_IFINDEX, /* u32, unchangeable */ | |
431 | - NDTPA_REFCNT, /* u32, read-only */ | |
432 | - NDTPA_REACHABLE_TIME, /* u64, read-only, msecs */ | |
433 | - NDTPA_BASE_REACHABLE_TIME, /* u64, msecs */ | |
434 | - NDTPA_RETRANS_TIME, /* u64, msecs */ | |
435 | - NDTPA_GC_STALETIME, /* u64, msecs */ | |
436 | - NDTPA_DELAY_PROBE_TIME, /* u64, msecs */ | |
437 | - NDTPA_QUEUE_LEN, /* u32 */ | |
438 | - NDTPA_APP_PROBES, /* u32 */ | |
439 | - NDTPA_UCAST_PROBES, /* u32 */ | |
440 | - NDTPA_MCAST_PROBES, /* u32 */ | |
441 | - NDTPA_ANYCAST_DELAY, /* u64, msecs */ | |
442 | - NDTPA_PROXY_DELAY, /* u64, msecs */ | |
443 | - NDTPA_PROXY_QLEN, /* u32 */ | |
444 | - NDTPA_LOCKTIME, /* u64, msecs */ | |
445 | - __NDTPA_MAX | |
446 | -}; | |
447 | -#define NDTPA_MAX (__NDTPA_MAX - 1) | |
448 | - | |
449 | -struct ndtmsg | |
450 | -{ | |
451 | - __u8 ndtm_family; | |
452 | - __u8 ndtm_pad1; | |
453 | - __u16 ndtm_pad2; | |
454 | -}; | |
455 | - | |
456 | -struct ndt_config | |
457 | -{ | |
458 | - __u16 ndtc_key_len; | |
459 | - __u16 ndtc_entry_size; | |
460 | - __u32 ndtc_entries; | |
461 | - __u32 ndtc_last_flush; /* delta to now in msecs */ | |
462 | - __u32 ndtc_last_rand; /* delta to now in msecs */ | |
463 | - __u32 ndtc_hash_rnd; | |
464 | - __u32 ndtc_hash_mask; | |
465 | - __u32 ndtc_hash_chain_gc; | |
466 | - __u32 ndtc_proxy_qlen; | |
467 | -}; | |
468 | - | |
469 | -enum { | |
470 | - NDTA_UNSPEC, | |
471 | - NDTA_NAME, /* char *, unchangeable */ | |
472 | - NDTA_THRESH1, /* u32 */ | |
473 | - NDTA_THRESH2, /* u32 */ | |
474 | - NDTA_THRESH3, /* u32 */ | |
475 | - NDTA_CONFIG, /* struct ndt_config, read-only */ | |
476 | - NDTA_PARMS, /* nested TLV NDTPA_* */ | |
477 | - NDTA_STATS, /* struct ndt_stats, read-only */ | |
478 | - NDTA_GC_INTERVAL, /* u64, msecs */ | |
479 | - __NDTA_MAX | |
480 | -}; | |
481 | -#define NDTA_MAX (__NDTA_MAX - 1) | |
482 | - | |
483 | -#define NDTA_RTA(r) ((struct rtattr*)(((char*)(r)) + \ | |
484 | - NLMSG_ALIGN(sizeof(struct ndtmsg)))) | |
485 | -#define NDTA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ndtmsg)) | |
486 | - | |
487 | - | |
488 | 387 | /**** |
489 | 388 | * General form of address family dependent message. |
490 | 389 | ****/ |
net/core/rtnetlink.c
... | ... | @@ -112,7 +112,6 @@ |
112 | 112 | [RTM_FAM(RTM_NEWPREFIX)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), |
113 | 113 | [RTM_FAM(RTM_GETMULTICAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), |
114 | 114 | [RTM_FAM(RTM_GETANYCAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), |
115 | - [RTM_FAM(RTM_NEWNEIGHTBL)] = NLMSG_LENGTH(sizeof(struct ndtmsg)), | |
116 | 115 | }; |
117 | 116 | |
118 | 117 | static const int rta_max[RTM_NR_FAMILIES] = |
... | ... | @@ -125,7 +124,6 @@ |
125 | 124 | [RTM_FAM(RTM_NEWTCLASS)] = TCA_MAX, |
126 | 125 | [RTM_FAM(RTM_NEWTFILTER)] = TCA_MAX, |
127 | 126 | [RTM_FAM(RTM_NEWACTION)] = TCAA_MAX, |
128 | - [RTM_FAM(RTM_NEWNEIGHTBL)] = NDTA_MAX, | |
129 | 127 | }; |
130 | 128 | |
131 | 129 | void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data) |