Commit 6a5b27ef authored by Hideaki Yoshifuji's avatar Hideaki Yoshifuji Committed by David S. Miller

[IPV6]: Kill broken and unused IPV6_AUTHHDR support.

parent 8e8d5123
...@@ -185,7 +185,6 @@ struct inet6_skb_parm ...@@ -185,7 +185,6 @@ struct inet6_skb_parm
int iif; int iif;
__u16 ra; __u16 ra;
__u16 hop; __u16 hop;
__u16 auth;
__u16 dst0; __u16 dst0;
__u16 srcrt; __u16 srcrt;
__u16 dst1; __u16 dst1;
...@@ -211,7 +210,6 @@ struct ipv6_pinfo { ...@@ -211,7 +210,6 @@ struct ipv6_pinfo {
rxhlim:1, rxhlim:1,
hopopts:1, hopopts:1,
dstopts:1, dstopts:1,
authhdr:1,
rxflow:1; rxflow:1;
} bits; } bits;
__u8 all; __u8 all;
......
...@@ -242,10 +242,6 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) ...@@ -242,10 +242,6 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
struct ipv6_rt_hdr *rthdr = (struct ipv6_rt_hdr *)(skb->nh.raw + opt->srcrt); struct ipv6_rt_hdr *rthdr = (struct ipv6_rt_hdr *)(skb->nh.raw + opt->srcrt);
put_cmsg(msg, SOL_IPV6, IPV6_RTHDR, (rthdr->hdrlen+1) << 3, rthdr); put_cmsg(msg, SOL_IPV6, IPV6_RTHDR, (rthdr->hdrlen+1) << 3, rthdr);
} }
if (np->rxopt.bits.authhdr && opt->auth) {
u8 *ptr = skb->nh.raw + opt->auth;
put_cmsg(msg, SOL_IPV6, IPV6_AUTHHDR, (ptr[1]+1)<<2, ptr);
}
if (np->rxopt.bits.dstopts && opt->dst1) { if (np->rxopt.bits.dstopts && opt->dst1) {
u8 *ptr = skb->nh.raw + opt->dst1; u8 *ptr = skb->nh.raw + opt->dst1;
put_cmsg(msg, SOL_IPV6, IPV6_DSTOPTS, (ptr[1]+1)<<3, ptr); put_cmsg(msg, SOL_IPV6, IPV6_DSTOPTS, (ptr[1]+1)<<3, ptr);
...@@ -378,26 +374,6 @@ int datagram_send_ctl(struct msghdr *msg, struct flowi *fl, ...@@ -378,26 +374,6 @@ int datagram_send_ctl(struct msghdr *msg, struct flowi *fl,
opt->dst1opt = hdr; opt->dst1opt = hdr;
break; break;
case IPV6_AUTHHDR:
if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct ipv6_opt_hdr))) {
err = -EINVAL;
goto exit_f;
}
hdr = (struct ipv6_opt_hdr *)CMSG_DATA(cmsg);
len = ((hdr->hdrlen + 2) << 2);
if (cmsg->cmsg_len < CMSG_LEN(len)) {
err = -EINVAL;
goto exit_f;
}
if (len & ~7) {
err = -EINVAL;
goto exit_f;
}
opt->opt_flen += len;
opt->auth = hdr;
break;
case IPV6_RTHDR: case IPV6_RTHDR:
if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct ipv6_rt_hdr))) { if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct ipv6_rt_hdr))) {
err = -EINVAL; err = -EINVAL;
......
...@@ -518,17 +518,6 @@ static u8 *ipv6_build_exthdr(struct sk_buff *skb, u8 *prev_hdr, u8 type, struct ...@@ -518,17 +518,6 @@ static u8 *ipv6_build_exthdr(struct sk_buff *skb, u8 *prev_hdr, u8 type, struct
return &h->nexthdr; return &h->nexthdr;
} }
static u8 *ipv6_build_authhdr(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_opt_hdr *opt)
{
struct ipv6_opt_hdr *h = (struct ipv6_opt_hdr *)skb_put(skb, (opt->hdrlen+2)<<2);
memcpy(h, opt, (opt->hdrlen+2)<<2);
h->nexthdr = *prev_hdr;
*prev_hdr = NEXTHDR_AUTH;
return &h->nexthdr;
}
u8 *ipv6_build_nfrag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt, u8 *ipv6_build_nfrag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt,
struct in6_addr *daddr, u32 jumbolen) struct in6_addr *daddr, u32 jumbolen)
{ {
...@@ -567,8 +556,6 @@ u8 *ipv6_build_nfrag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptio ...@@ -567,8 +556,6 @@ u8 *ipv6_build_nfrag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptio
u8 *ipv6_build_frag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt) u8 *ipv6_build_frag_opts(struct sk_buff *skb, u8 *prev_hdr, struct ipv6_txoptions *opt)
{ {
if (opt->auth)
prev_hdr = ipv6_build_authhdr(skb, prev_hdr, opt->auth);
if (opt->dst1opt) if (opt->dst1opt)
prev_hdr = ipv6_build_exthdr(skb, prev_hdr, NEXTHDR_DEST, opt->dst1opt); prev_hdr = ipv6_build_exthdr(skb, prev_hdr, NEXTHDR_DEST, opt->dst1opt);
return prev_hdr; return prev_hdr;
...@@ -608,15 +595,6 @@ static void ipv6_push_exthdr(struct sk_buff *skb, u8 *proto, u8 type, struct ipv ...@@ -608,15 +595,6 @@ static void ipv6_push_exthdr(struct sk_buff *skb, u8 *proto, u8 type, struct ipv
*proto = type; *proto = type;
} }
static void ipv6_push_authhdr(struct sk_buff *skb, u8 *proto, struct ipv6_opt_hdr *opt)
{
struct ipv6_opt_hdr *h = (struct ipv6_opt_hdr *)skb_push(skb, (opt->hdrlen+2)<<2);
memcpy(h, opt, (opt->hdrlen+2)<<2);
h->nexthdr = *proto;
*proto = NEXTHDR_AUTH;
}
void ipv6_push_nfrag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, void ipv6_push_nfrag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt,
u8 *proto, u8 *proto,
struct in6_addr **daddr) struct in6_addr **daddr)
...@@ -633,8 +611,6 @@ void ipv6_push_frag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, u8 *pr ...@@ -633,8 +611,6 @@ void ipv6_push_frag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, u8 *pr
{ {
if (opt->dst1opt) if (opt->dst1opt)
ipv6_push_exthdr(skb, proto, NEXTHDR_DEST, opt->dst1opt); ipv6_push_exthdr(skb, proto, NEXTHDR_DEST, opt->dst1opt);
if (opt->auth)
ipv6_push_authhdr(skb, proto, opt->auth);
} }
struct ipv6_txoptions * struct ipv6_txoptions *
...@@ -652,8 +628,6 @@ ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt) ...@@ -652,8 +628,6 @@ ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt)
*((char**)&opt2->dst0opt) += dif; *((char**)&opt2->dst0opt) += dif;
if (opt2->dst1opt) if (opt2->dst1opt)
*((char**)&opt2->dst1opt) += dif; *((char**)&opt2->dst1opt) += dif;
if (opt2->auth)
*((char**)&opt2->auth) += dif;
if (opt2->srcrt) if (opt2->srcrt)
*((char**)&opt2->srcrt) += dif; *((char**)&opt2->srcrt) += dif;
} }
......
...@@ -230,11 +230,6 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval, ...@@ -230,11 +230,6 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, char *optval,
retv = 0; retv = 0;
break; break;
case IPV6_AUTHHDR:
np->rxopt.bits.authhdr = valbool;
retv = 0;
break;
case IPV6_DSTOPTS: case IPV6_DSTOPTS:
np->rxopt.bits.dstopts = valbool; np->rxopt.bits.dstopts = valbool;
retv = 0; retv = 0;
...@@ -623,10 +618,6 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname, char *optval, ...@@ -623,10 +618,6 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname, char *optval,
val = np->rxopt.bits.hopopts; val = np->rxopt.bits.hopopts;
break; break;
case IPV6_AUTHHDR:
val = np->rxopt.bits.authhdr;
break;
case IPV6_DSTOPTS: case IPV6_DSTOPTS:
val = np->rxopt.bits.dstopts; val = np->rxopt.bits.dstopts;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment