mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 12:25:02 +00:00
lib/prefix: flip the bitrot compost
Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
parent
1b3e9a21dd
commit
25d8623340
492
lib/prefix.c
492
lib/prefix.c
@ -37,394 +37,6 @@ DEFINE_MTYPE_STATIC(LIB, PREFIX_FLOWSPEC, "Prefix Flowspec")
|
||||
static const uint8_t maskbit[] = {0x00, 0x80, 0xc0, 0xe0, 0xf0,
|
||||
0xf8, 0xfc, 0xfe, 0xff};
|
||||
|
||||
static const struct in6_addr maskbytes6[] = {
|
||||
/* /0 */ {{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /1 */
|
||||
{{{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /2 */
|
||||
{{{0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /3 */
|
||||
{{{0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /4 */
|
||||
{{{0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /5 */
|
||||
{{{0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /6 */
|
||||
{{{0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /7 */
|
||||
{{{0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /8 */
|
||||
{{{0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /9 */
|
||||
{{{0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /10 */
|
||||
{{{0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /11 */
|
||||
{{{0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /12 */
|
||||
{{{0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /13 */
|
||||
{{{0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /14 */
|
||||
{{{0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /15 */
|
||||
{{{0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /16 */
|
||||
{{{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /17 */
|
||||
{{{0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /18 */
|
||||
{{{0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /19 */
|
||||
{{{0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /20 */
|
||||
{{{0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /21 */
|
||||
{{{0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /22 */
|
||||
{{{0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /23 */
|
||||
{{{0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /24 */
|
||||
{{{0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /25 */
|
||||
{{{0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /26 */
|
||||
{{{0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /27 */
|
||||
{{{0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /28 */
|
||||
{{{0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /29 */
|
||||
{{{0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /30 */
|
||||
{{{0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /31 */
|
||||
{{{0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /32 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /33 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /34 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /35 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /36 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /37 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /38 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /39 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /40 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /41 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /42 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /43 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /44 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /45 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /46 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /47 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /48 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /49 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /50 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /51 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /52 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /53 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /54 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /55 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /56 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /57 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /58 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /59 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /60 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /61 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /62 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /63 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /64 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /65 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /66 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /67 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /68 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /69 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /70 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /71 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /72 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /73 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /74 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /75 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /76 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /77 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /78 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /79 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /80 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /81 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /82 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /83 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /84 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /85 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /86 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /87 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /88 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /89 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /90 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /91 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xe0, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /92 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /93 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xf8, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /94 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfc, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /95 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfe, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /96 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x00, 0x00, 0x00}}},
|
||||
/* /97 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x80, 0x00, 0x00, 0x00}}},
|
||||
/* /98 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xc0, 0x00, 0x00, 0x00}}},
|
||||
/* /99 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xe0, 0x00, 0x00, 0x00}}},
|
||||
/* /100 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xf0, 0x00, 0x00, 0x00}}},
|
||||
/* /101 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xf8, 0x00, 0x00, 0x00}}},
|
||||
/* /102 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfc, 0x00, 0x00, 0x00}}},
|
||||
/* /103 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfe, 0x00, 0x00, 0x00}}},
|
||||
/* /104 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x00, 0x00, 0x00}}},
|
||||
/* /105 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x80, 0x00, 0x00}}},
|
||||
/* /106 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xc0, 0x00, 0x00}}},
|
||||
/* /107 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xe0, 0x00, 0x00}}},
|
||||
/* /108 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf0, 0x00, 0x00}}},
|
||||
/* /109 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf8, 0x00, 0x00}}},
|
||||
/* /110 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfc, 0x00, 0x00}}},
|
||||
/* /111 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0x00, 0x00}}},
|
||||
/* /112 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x00, 0x00}}},
|
||||
/* /113 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x80, 0x00}}},
|
||||
/* /114 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xc0, 0x00}}},
|
||||
/* /115 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xe0, 0x00}}},
|
||||
/* /116 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xf0, 0x00}}},
|
||||
/* /117 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xf8, 0x00}}},
|
||||
/* /118 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xfc, 0x00}}},
|
||||
/* /119 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xfe, 0x00}}},
|
||||
/* /120 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00}}},
|
||||
/* /121 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x80}}},
|
||||
/* /122 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xc0}}},
|
||||
/* /123 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xe0}}},
|
||||
/* /124 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xf0}}},
|
||||
/* /125 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xf8}}},
|
||||
/* /126 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xfc}}},
|
||||
/* /127 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xfe}}},
|
||||
/* /128 */
|
||||
{{{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff}}}};
|
||||
|
||||
/* Number of bits in prefix type. */
|
||||
#ifndef PNBBY
|
||||
#define PNBBY 8
|
||||
@ -432,15 +44,6 @@ static const struct in6_addr maskbytes6[] = {
|
||||
|
||||
#define MASKBIT(offset) ((0xff << (PNBBY - (offset))) & 0xff)
|
||||
|
||||
void prefix_hexdump(const struct prefix *p)
|
||||
{
|
||||
char buf[PREFIX_STRLEN];
|
||||
|
||||
zlog_debug("prefix: %s",
|
||||
prefix2str(p, buf, sizeof(buf)));
|
||||
zlog_hexdump(p, sizeof(struct prefix));
|
||||
}
|
||||
|
||||
int is_zero_mac(const struct ethaddr *mac)
|
||||
{
|
||||
int i = 0;
|
||||
@ -461,11 +64,6 @@ unsigned int prefix_bit(const uint8_t *prefix, const uint16_t prefixlen)
|
||||
return (prefix[offset] >> shift) & 1;
|
||||
}
|
||||
|
||||
unsigned int prefix6_bit(const struct in6_addr *prefix, const uint16_t prefixlen)
|
||||
{
|
||||
return prefix_bit((const uint8_t *)&prefix->s6_addr, prefixlen);
|
||||
}
|
||||
|
||||
int str2family(const char *string)
|
||||
{
|
||||
if (!strcmp("ipv4", string))
|
||||
@ -1121,31 +719,46 @@ int str2prefix_ipv6(const char *str, struct prefix_ipv6 *p)
|
||||
* FIXME return uint8_t as ip_maskleni() does. */
|
||||
int ip6_masklen(struct in6_addr netmask)
|
||||
{
|
||||
int len = 0;
|
||||
unsigned char val;
|
||||
unsigned char *pnt;
|
||||
|
||||
pnt = (unsigned char *)&netmask;
|
||||
|
||||
while ((*pnt == 0xff) && len < IPV6_MAX_BITLEN) {
|
||||
len += 8;
|
||||
pnt++;
|
||||
}
|
||||
|
||||
if (len < IPV6_MAX_BITLEN) {
|
||||
val = *pnt;
|
||||
while (val) {
|
||||
len++;
|
||||
val <<= 1;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
if (netmask.s6_addr32[0] != 0xffffffffU)
|
||||
return __builtin_clz(~ntohl(netmask.s6_addr32[0]));
|
||||
if (netmask.s6_addr32[1] != 0xffffffffU)
|
||||
return __builtin_clz(~ntohl(netmask.s6_addr32[1])) + 32;
|
||||
if (netmask.s6_addr32[2] != 0xffffffffU)
|
||||
return __builtin_clz(~ntohl(netmask.s6_addr32[2])) + 64;
|
||||
if (netmask.s6_addr32[3] != 0xffffffffU)
|
||||
return __builtin_clz(~ntohl(netmask.s6_addr32[3])) + 96;
|
||||
/* note __builtin_clz(0) is undefined */
|
||||
return 128;
|
||||
}
|
||||
|
||||
void masklen2ip6(const int masklen, struct in6_addr *netmask)
|
||||
{
|
||||
assert(masklen >= 0 && masklen <= IPV6_MAX_BITLEN);
|
||||
memcpy(netmask, maskbytes6 + masklen, sizeof(struct in6_addr));
|
||||
|
||||
if (masklen == 0) {
|
||||
/* note << 32 is undefined */
|
||||
memset(netmask, 0, sizeof(*netmask));
|
||||
} else if (masklen <= 32) {
|
||||
netmask->s6_addr32[0] = htonl(0xffffffffU << (32 - masklen));
|
||||
netmask->s6_addr32[1] = 0;
|
||||
netmask->s6_addr32[2] = 0;
|
||||
netmask->s6_addr32[3] = 0;
|
||||
} else if (masklen <= 64) {
|
||||
netmask->s6_addr32[0] = 0xffffffffU;
|
||||
netmask->s6_addr32[1] = htonl(0xffffffffU << (64 - masklen));
|
||||
netmask->s6_addr32[2] = 0;
|
||||
netmask->s6_addr32[3] = 0;
|
||||
} else if (masklen <= 96) {
|
||||
netmask->s6_addr32[0] = 0xffffffffU;
|
||||
netmask->s6_addr32[1] = 0xffffffffU;
|
||||
netmask->s6_addr32[2] = htonl(0xffffffffU << (96 - masklen));
|
||||
netmask->s6_addr32[3] = 0;
|
||||
} else {
|
||||
netmask->s6_addr32[0] = 0xffffffffU;
|
||||
netmask->s6_addr32[1] = 0xffffffffU;
|
||||
netmask->s6_addr32[2] = 0xffffffffU;
|
||||
netmask->s6_addr32[3] = htonl(0xffffffffU << (128 - masklen));
|
||||
}
|
||||
}
|
||||
|
||||
void apply_mask_ipv6(struct prefix_ipv6 *p)
|
||||
@ -1183,33 +796,6 @@ void apply_mask(struct prefix *p)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Utility function of convert between struct prefix <=> union sockunion.
|
||||
* FIXME This function isn't used anywhere. */
|
||||
struct prefix *sockunion2prefix(const union sockunion *dest,
|
||||
const union sockunion *mask)
|
||||
{
|
||||
if (dest->sa.sa_family == AF_INET) {
|
||||
struct prefix_ipv4 *p;
|
||||
|
||||
p = prefix_ipv4_new();
|
||||
p->family = AF_INET;
|
||||
p->prefix = dest->sin.sin_addr;
|
||||
p->prefixlen = ip_masklen(mask->sin.sin_addr);
|
||||
return (struct prefix *)p;
|
||||
}
|
||||
if (dest->sa.sa_family == AF_INET6) {
|
||||
struct prefix_ipv6 *p;
|
||||
|
||||
p = prefix_ipv6_new();
|
||||
p->family = AF_INET6;
|
||||
p->prefixlen = ip6_masklen(mask->sin6.sin6_addr);
|
||||
memcpy(&p->prefix, &dest->sin6.sin6_addr,
|
||||
sizeof(struct in6_addr));
|
||||
return (struct prefix *)p;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Utility function of convert between struct prefix <=> union sockunion. */
|
||||
struct prefix *sockunion2hostprefix(const union sockunion *su,
|
||||
struct prefix *prefix)
|
||||
@ -1521,14 +1107,6 @@ void apply_classful_mask_ipv4(struct prefix_ipv4 *p)
|
||||
}
|
||||
}
|
||||
|
||||
in_addr_t ipv4_network_addr(in_addr_t hostaddr, int masklen)
|
||||
{
|
||||
struct in_addr mask;
|
||||
|
||||
masklen2ip(masklen, &mask);
|
||||
return hostaddr & mask.s_addr;
|
||||
}
|
||||
|
||||
in_addr_t ipv4_broadcast_addr(in_addr_t hostaddr, int masklen)
|
||||
{
|
||||
struct in_addr mask;
|
||||
|
@ -392,8 +392,6 @@ extern const char *afi2str(afi_t afi);
|
||||
|
||||
/* Check bit of the prefix. */
|
||||
extern unsigned int prefix_bit(const uint8_t *prefix, const uint16_t prefixlen);
|
||||
extern unsigned int prefix6_bit(const struct in6_addr *prefix,
|
||||
const uint16_t prefixlen);
|
||||
|
||||
extern struct prefix *prefix_new(void);
|
||||
extern void prefix_free(struct prefix **p);
|
||||
@ -430,8 +428,6 @@ extern void apply_mask(struct prefix *);
|
||||
#define prefix_copy(a, b) ({ memset(a, 0, sizeof(*a)); prefix_copy(a, b); })
|
||||
#endif
|
||||
|
||||
extern struct prefix *sockunion2prefix(const union sockunion *dest,
|
||||
const union sockunion *mask);
|
||||
extern struct prefix *sockunion2hostprefix(const union sockunion *,
|
||||
struct prefix *p);
|
||||
extern void prefix2sockunion(const struct prefix *, union sockunion *);
|
||||
@ -453,8 +449,6 @@ extern void apply_classful_mask_ipv4(struct prefix_ipv4 *);
|
||||
|
||||
extern uint8_t ip_masklen(struct in_addr);
|
||||
extern void masklen2ip(const int, struct in_addr *);
|
||||
/* returns the network portion of the host address */
|
||||
extern in_addr_t ipv4_network_addr(in_addr_t hostaddr, int masklen);
|
||||
/* given the address of a host on a network and the network mask length,
|
||||
* calculate the broadcast address for that network;
|
||||
* special treatment for /31: returns the address of the other host
|
||||
@ -484,7 +478,6 @@ extern unsigned prefix_hash_key(const void *pp);
|
||||
|
||||
extern int str_to_esi(const char *str, esi_t *esi);
|
||||
extern char *esi_to_str(const esi_t *esi, char *buf, int size);
|
||||
extern void prefix_hexdump(const struct prefix *p);
|
||||
extern void prefix_evpn_hexdump(const struct prefix_evpn *p);
|
||||
|
||||
static inline int ipv6_martian(struct in6_addr *addr)
|
||||
|
Loading…
Reference in New Issue
Block a user