1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

Temporary OSPFv3 development commit

This commit is contained in:
Ondrej Zajicek
2009-08-25 16:42:14 +02:00
parent c3226991a0
commit b49e6f5a65
23 changed files with 449 additions and 214 deletions

View File

@@ -136,6 +136,60 @@ ipv6_compare(ip_addr X, ip_addr Y)
return 0;
}
/* From Linux include/net/ipv6.h */
#define NEXTHDR_HOP 0 /* Hop-by-hop option header. */
#define NEXTHDR_ROUTING 43 /* Routing header. */
#define NEXTHDR_FRAGMENT 44 /* Fragmentation/reassembly header. */
#define NEXTHDR_DEST 60 /* Destination options header. */
#define NEXTHDR_NONE 59 /* No next header */
#define NEXTHDR_ESP 50 /* Encapsulating security payload. */
#define NEXTHDR_AUTH 51 /* Authentication header. */
byte *
ipv6_skip_header(byte *pkt, int *len)
{
int l = *len;
int q;
u8 nh;
if (l < 40 || (*pkt & 0xf0) != 0x60)
return NULL;
/* Skip IPv6 header */
nh = pkt[6];
pkt += 40;
while ()
{
switch (nw)
{
case NEXTHDR_FRAGMENT:
case NEXTHDR_HOP:
case NEXTHDR_ROUTING:
case NEXTHDR_DEST:
case NEXTHDR_AUTH:
break;
case NEXTHDR_NONE:
return NULL;
default:
return pkt;
}
}
q = (*pkt & 0x0f) * 4;
if (q > l)
return NULL;
*len -= q;
return pkt + q;
}
/*
* Conversion of IPv6 address to presentation format and vice versa.
* Heavily inspired by routines written by Paul Vixie for the BIND project