[NetLabel]: core network changes
Changes to the core network stack to support the NetLabel subsystem. This includes changes to the IPv4 option handling to support CIPSO labels. Signed-off-by: Paul Moore <paul.moore@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
8802f616f6
commit
11a03f78fb
@@ -24,6 +24,7 @@
|
||||
#include <net/ip.h>
|
||||
#include <net/icmp.h>
|
||||
#include <net/route.h>
|
||||
#include <net/cipso_ipv4.h>
|
||||
|
||||
/*
|
||||
* Write options to IP header, record destination address to
|
||||
@@ -194,6 +195,13 @@ int ip_options_echo(struct ip_options * dopt, struct sk_buff * skb)
|
||||
dopt->is_strictroute = sopt->is_strictroute;
|
||||
}
|
||||
}
|
||||
if (sopt->cipso) {
|
||||
optlen = sptr[sopt->cipso+1];
|
||||
dopt->cipso = dopt->optlen+sizeof(struct iphdr);
|
||||
memcpy(dptr, sptr+sopt->cipso, optlen);
|
||||
dptr += optlen;
|
||||
dopt->optlen += optlen;
|
||||
}
|
||||
while (dopt->optlen & 3) {
|
||||
*dptr++ = IPOPT_END;
|
||||
dopt->optlen++;
|
||||
@@ -434,6 +442,17 @@ int ip_options_compile(struct ip_options * opt, struct sk_buff * skb)
|
||||
if (optptr[2] == 0 && optptr[3] == 0)
|
||||
opt->router_alert = optptr - iph;
|
||||
break;
|
||||
case IPOPT_CIPSO:
|
||||
if (opt->cipso) {
|
||||
pp_ptr = optptr;
|
||||
goto error;
|
||||
}
|
||||
opt->cipso = optptr - iph;
|
||||
if (cipso_v4_validate(&optptr)) {
|
||||
pp_ptr = optptr;
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
case IPOPT_SEC:
|
||||
case IPOPT_SID:
|
||||
default:
|
||||
|
Reference in New Issue
Block a user