|
@@ -152,7 +152,7 @@ static struct tlvtype_proc tlvprocdestopt_lst[] = {
|
|
{-1, NULL}
|
|
{-1, NULL}
|
|
};
|
|
};
|
|
|
|
|
|
-static int ipv6_destopt_rcv(struct sk_buff **skbp, unsigned int *nhoffp)
|
|
|
|
|
|
+static int ipv6_destopt_rcv(struct sk_buff **skbp)
|
|
{
|
|
{
|
|
struct sk_buff *skb = *skbp;
|
|
struct sk_buff *skb = *skbp;
|
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
|
@@ -169,7 +169,7 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp, unsigned int *nhoffp)
|
|
|
|
|
|
if (ip6_parse_tlv(tlvprocdestopt_lst, skb)) {
|
|
if (ip6_parse_tlv(tlvprocdestopt_lst, skb)) {
|
|
skb->h.raw += ((skb->h.raw[1]+1)<<3);
|
|
skb->h.raw += ((skb->h.raw[1]+1)<<3);
|
|
- *nhoffp = opt->dst1;
|
|
|
|
|
|
+ opt->nhoff = opt->dst1;
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -192,7 +192,7 @@ void __init ipv6_destopt_init(void)
|
|
NONE header. No data in packet.
|
|
NONE header. No data in packet.
|
|
********************************/
|
|
********************************/
|
|
|
|
|
|
-static int ipv6_nodata_rcv(struct sk_buff **skbp, unsigned int *nhoffp)
|
|
|
|
|
|
+static int ipv6_nodata_rcv(struct sk_buff **skbp)
|
|
{
|
|
{
|
|
struct sk_buff *skb = *skbp;
|
|
struct sk_buff *skb = *skbp;
|
|
|
|
|
|
@@ -215,7 +215,7 @@ void __init ipv6_nodata_init(void)
|
|
Routing header.
|
|
Routing header.
|
|
********************************/
|
|
********************************/
|
|
|
|
|
|
-static int ipv6_rthdr_rcv(struct sk_buff **skbp, unsigned int *nhoffp)
|
|
|
|
|
|
+static int ipv6_rthdr_rcv(struct sk_buff **skbp)
|
|
{
|
|
{
|
|
struct sk_buff *skb = *skbp;
|
|
struct sk_buff *skb = *skbp;
|
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
|
@@ -249,7 +249,7 @@ looped_back:
|
|
skb->h.raw += (hdr->hdrlen + 1) << 3;
|
|
skb->h.raw += (hdr->hdrlen + 1) << 3;
|
|
opt->dst0 = opt->dst1;
|
|
opt->dst0 = opt->dst1;
|
|
opt->dst1 = 0;
|
|
opt->dst1 = 0;
|
|
- *nhoffp = (&hdr->nexthdr) - skb->nh.raw;
|
|
|
|
|
|
+ opt->nhoff = (&hdr->nexthdr) - skb->nh.raw;
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -487,9 +487,14 @@ static struct tlvtype_proc tlvprochopopt_lst[] = {
|
|
|
|
|
|
int ipv6_parse_hopopts(struct sk_buff *skb, int nhoff)
|
|
int ipv6_parse_hopopts(struct sk_buff *skb, int nhoff)
|
|
{
|
|
{
|
|
- IP6CB(skb)->hop = sizeof(struct ipv6hdr);
|
|
|
|
- if (ip6_parse_tlv(tlvprochopopt_lst, skb))
|
|
|
|
|
|
+ struct inet6_skb_parm *opt = IP6CB(skb);
|
|
|
|
+
|
|
|
|
+ opt->hop = sizeof(struct ipv6hdr);
|
|
|
|
+ if (ip6_parse_tlv(tlvprochopopt_lst, skb)) {
|
|
|
|
+ skb->h.raw += (skb->h.raw[1]+1)<<3;
|
|
|
|
+ opt->nhoff = sizeof(struct ipv6hdr);
|
|
return sizeof(struct ipv6hdr);
|
|
return sizeof(struct ipv6hdr);
|
|
|
|
+ }
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|