diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/Makefile | 3 | ||||
-rw-r--r-- | net/ipv6/af_inet6.c | 14 | ||||
-rw-r--r-- | net/ipv6/ipv6_sockglue.c | 6 | ||||
-rw-r--r-- | net/ipv6/proc.c | 6 | ||||
-rw-r--r-- | net/ipv6/udp.c (renamed from net/ipv6/udp_ipv6.c) | 16 | ||||
-rw-r--r-- | net/ipv6/udplite.c (renamed from net/ipv6/udplite_ipv6.c) | 0 |
6 files changed, 10 insertions, 35 deletions
diff --git a/net/ipv6/Makefile b/net/ipv6/Makefile index 107051f7c227..ae14617e607f 100644 --- a/net/ipv6/Makefile +++ b/net/ipv6/Makefile | |||
@@ -6,7 +6,7 @@ obj-$(CONFIG_IPV6) += ipv6.o | |||
6 | 6 | ||
7 | ipv6-objs := af_inet6.o anycast.o ip6_output.o ip6_input.o addrconf.o \ | 7 | ipv6-objs := af_inet6.o anycast.o ip6_output.o ip6_input.o addrconf.o \ |
8 | addrlabel.o \ | 8 | addrlabel.o \ |
9 | route.o ip6_fib.o ipv6_sockglue.o ndisc.o udp_ipv6.o \ | 9 | route.o ip6_fib.o ipv6_sockglue.o ndisc.o udp.o udplite.o \ |
10 | raw.o protocol.o icmp.o mcast.o reassembly.o tcp_ipv6.o \ | 10 | raw.o protocol.o icmp.o mcast.o reassembly.o tcp_ipv6.o \ |
11 | exthdrs.o datagram.o ip6_flowlabel.o inet6_connection_sock.o | 11 | exthdrs.o datagram.o ip6_flowlabel.o inet6_connection_sock.o |
12 | 12 | ||
@@ -17,7 +17,6 @@ ipv6-$(CONFIG_NETFILTER) += netfilter.o | |||
17 | ipv6-$(CONFIG_IPV6_MULTIPLE_TABLES) += fib6_rules.o | 17 | ipv6-$(CONFIG_IPV6_MULTIPLE_TABLES) += fib6_rules.o |
18 | ipv6-$(CONFIG_PROC_FS) += proc.o | 18 | ipv6-$(CONFIG_PROC_FS) += proc.o |
19 | ipv6-$(CONFIG_SYN_COOKIES) += syncookies.o | 19 | ipv6-$(CONFIG_SYN_COOKIES) += syncookies.o |
20 | ipv6-$(CONFIG_IP_UDPLITE) += udplite_ipv6.o | ||
21 | 20 | ||
22 | ipv6-objs += $(ipv6-y) | 21 | ipv6-objs += $(ipv6-y) |
23 | 22 | ||
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index afe9276d0420..730a861b8f41 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -813,16 +813,12 @@ static int __init init_ipv6_mibs(void) | |||
813 | goto err_icmpmsg_mib; | 813 | goto err_icmpmsg_mib; |
814 | if (snmp_mib_init((void **)udp_stats_in6, sizeof (struct udp_mib)) < 0) | 814 | if (snmp_mib_init((void **)udp_stats_in6, sizeof (struct udp_mib)) < 0) |
815 | goto err_udp_mib; | 815 | goto err_udp_mib; |
816 | #ifdef CONFIG_IP_UDPLITE | ||
817 | if (snmp_mib_init((void **)udplite_stats_in6, | 816 | if (snmp_mib_init((void **)udplite_stats_in6, |
818 | sizeof (struct udp_mib)) < 0) | 817 | sizeof (struct udp_mib)) < 0) |
819 | goto err_udplite_mib; | 818 | goto err_udplite_mib; |
820 | #endif | ||
821 | return 0; | 819 | return 0; |
822 | 820 | ||
823 | #ifdef CONFIG_IP_UDPLITE | ||
824 | err_udplite_mib: | 821 | err_udplite_mib: |
825 | #endif | ||
826 | snmp_mib_free((void **)udp_stats_in6); | 822 | snmp_mib_free((void **)udp_stats_in6); |
827 | err_udp_mib: | 823 | err_udp_mib: |
828 | snmp_mib_free((void **)icmpv6msg_statistics); | 824 | snmp_mib_free((void **)icmpv6msg_statistics); |
@@ -841,9 +837,7 @@ static void cleanup_ipv6_mibs(void) | |||
841 | snmp_mib_free((void **)icmpv6_statistics); | 837 | snmp_mib_free((void **)icmpv6_statistics); |
842 | snmp_mib_free((void **)icmpv6msg_statistics); | 838 | snmp_mib_free((void **)icmpv6msg_statistics); |
843 | snmp_mib_free((void **)udp_stats_in6); | 839 | snmp_mib_free((void **)udp_stats_in6); |
844 | #ifdef CONFIG_IP_UDPLITE | ||
845 | snmp_mib_free((void **)udplite_stats_in6); | 840 | snmp_mib_free((void **)udplite_stats_in6); |
846 | #endif | ||
847 | } | 841 | } |
848 | 842 | ||
849 | static int inet6_net_init(struct net *net) | 843 | static int inet6_net_init(struct net *net) |
@@ -888,11 +882,9 @@ static int __init inet6_init(void) | |||
888 | if (err) | 882 | if (err) |
889 | goto out_unregister_tcp_proto; | 883 | goto out_unregister_tcp_proto; |
890 | 884 | ||
891 | #ifdef CONFIG_IP_UDPLITE | ||
892 | err = proto_register(&udplitev6_prot, 1); | 885 | err = proto_register(&udplitev6_prot, 1); |
893 | if (err) | 886 | if (err) |
894 | goto out_unregister_udp_proto; | 887 | goto out_unregister_udp_proto; |
895 | #endif | ||
896 | 888 | ||
897 | err = proto_register(&rawv6_prot, 1); | 889 | err = proto_register(&rawv6_prot, 1); |
898 | if (err) | 890 | if (err) |
@@ -1063,10 +1055,8 @@ out_sock_register_fail: | |||
1063 | out_unregister_raw_proto: | 1055 | out_unregister_raw_proto: |
1064 | proto_unregister(&rawv6_prot); | 1056 | proto_unregister(&rawv6_prot); |
1065 | out_unregister_udplite_proto: | 1057 | out_unregister_udplite_proto: |
1066 | #ifdef CONFIG_IP_UDPLITE | ||
1067 | proto_unregister(&udplitev6_prot); | 1058 | proto_unregister(&udplitev6_prot); |
1068 | out_unregister_udp_proto: | 1059 | out_unregister_udp_proto: |
1069 | #endif | ||
1070 | proto_unregister(&udpv6_prot); | 1060 | proto_unregister(&udpv6_prot); |
1071 | out_unregister_tcp_proto: | 1061 | out_unregister_tcp_proto: |
1072 | proto_unregister(&tcpv6_prot); | 1062 | proto_unregister(&tcpv6_prot); |
@@ -1085,9 +1075,7 @@ static void __exit inet6_exit(void) | |||
1085 | ipv6_sysctl_unregister(); | 1075 | ipv6_sysctl_unregister(); |
1086 | #endif | 1076 | #endif |
1087 | udpv6_exit(); | 1077 | udpv6_exit(); |
1088 | #ifdef CONFIG_IP_UDPLITE | ||
1089 | udplitev6_exit(); | 1078 | udplitev6_exit(); |
1090 | #endif | ||
1091 | tcpv6_exit(); | 1079 | tcpv6_exit(); |
1092 | 1080 | ||
1093 | /* Cleanup code parts. */ | 1081 | /* Cleanup code parts. */ |
@@ -1117,9 +1105,7 @@ static void __exit inet6_exit(void) | |||
1117 | unregister_pernet_subsys(&inet6_net_ops); | 1105 | unregister_pernet_subsys(&inet6_net_ops); |
1118 | cleanup_ipv6_mibs(); | 1106 | cleanup_ipv6_mibs(); |
1119 | proto_unregister(&rawv6_prot); | 1107 | proto_unregister(&rawv6_prot); |
1120 | #ifdef CONFIG_IP_UDPLITE | ||
1121 | proto_unregister(&udplitev6_prot); | 1108 | proto_unregister(&udplitev6_prot); |
1122 | #endif | ||
1123 | proto_unregister(&udpv6_prot); | 1109 | proto_unregister(&udpv6_prot); |
1124 | proto_unregister(&tcpv6_prot); | 1110 | proto_unregister(&tcpv6_prot); |
1125 | } | 1111 | } |
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 3bbfdff698d2..5eea6fa506e5 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
@@ -127,9 +127,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, | |||
127 | struct sk_buff *pktopt; | 127 | struct sk_buff *pktopt; |
128 | 128 | ||
129 | if (sk->sk_protocol != IPPROTO_UDP && | 129 | if (sk->sk_protocol != IPPROTO_UDP && |
130 | #ifdef CONFIG_IP_UDPLITE | ||
131 | sk->sk_protocol != IPPROTO_UDPLITE && | 130 | sk->sk_protocol != IPPROTO_UDPLITE && |
132 | #endif | ||
133 | sk->sk_protocol != IPPROTO_TCP) | 131 | sk->sk_protocol != IPPROTO_TCP) |
134 | break; | 132 | break; |
135 | 133 | ||
@@ -169,7 +167,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, | |||
169 | } else { | 167 | } else { |
170 | struct proto *prot = &udp_prot; | 168 | struct proto *prot = &udp_prot; |
171 | 169 | ||
172 | if (IS_PROTO_UDPLITE(sk->sk_protocol)) | 170 | if (sk->sk_protocol == IPPROTO_UDPLITE) |
173 | prot = &udplite_prot; | 171 | prot = &udplite_prot; |
174 | local_bh_disable(); | 172 | local_bh_disable(); |
175 | sock_prot_inuse_add(sk->sk_prot, -1); | 173 | sock_prot_inuse_add(sk->sk_prot, -1); |
@@ -734,9 +732,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | |||
734 | switch (optname) { | 732 | switch (optname) { |
735 | case IPV6_ADDRFORM: | 733 | case IPV6_ADDRFORM: |
736 | if (sk->sk_protocol != IPPROTO_UDP && | 734 | if (sk->sk_protocol != IPPROTO_UDP && |
737 | #ifdef CONFIG_IP_UDPLITE | ||
738 | sk->sk_protocol != IPPROTO_UDPLITE && | 735 | sk->sk_protocol != IPPROTO_UDPLITE && |
739 | #endif | ||
740 | sk->sk_protocol != IPPROTO_TCP) | 736 | sk->sk_protocol != IPPROTO_TCP) |
741 | return -EINVAL; | 737 | return -EINVAL; |
742 | if (sk->sk_state != TCP_ESTABLISHED) | 738 | if (sk->sk_state != TCP_ESTABLISHED) |
diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c index 2453f2229ef7..8a5be290c710 100644 --- a/net/ipv6/proc.c +++ b/net/ipv6/proc.c | |||
@@ -39,10 +39,8 @@ static int sockstat6_seq_show(struct seq_file *seq, void *v) | |||
39 | sock_prot_inuse_get(&tcpv6_prot)); | 39 | sock_prot_inuse_get(&tcpv6_prot)); |
40 | seq_printf(seq, "UDP6: inuse %d\n", | 40 | seq_printf(seq, "UDP6: inuse %d\n", |
41 | sock_prot_inuse_get(&udpv6_prot)); | 41 | sock_prot_inuse_get(&udpv6_prot)); |
42 | #ifdef CONFIG_IP_UDPLITE | ||
43 | seq_printf(seq, "UDPLITE6: inuse %d\n", | 42 | seq_printf(seq, "UDPLITE6: inuse %d\n", |
44 | sock_prot_inuse_get(&udplitev6_prot)); | 43 | sock_prot_inuse_get(&udplitev6_prot)); |
45 | #endif | ||
46 | seq_printf(seq, "RAW6: inuse %d\n", | 44 | seq_printf(seq, "RAW6: inuse %d\n", |
47 | sock_prot_inuse_get(&rawv6_prot)); | 45 | sock_prot_inuse_get(&rawv6_prot)); |
48 | seq_printf(seq, "FRAG6: inuse %d memory %d\n", | 46 | seq_printf(seq, "FRAG6: inuse %d memory %d\n", |
@@ -113,7 +111,6 @@ static struct snmp_mib snmp6_udp6_list[] = { | |||
113 | SNMP_MIB_SENTINEL | 111 | SNMP_MIB_SENTINEL |
114 | }; | 112 | }; |
115 | 113 | ||
116 | #ifdef CONFIG_IP_UDPLITE | ||
117 | static struct snmp_mib snmp6_udplite6_list[] = { | 114 | static struct snmp_mib snmp6_udplite6_list[] = { |
118 | SNMP_MIB_ITEM("UdpLite6InDatagrams", UDP_MIB_INDATAGRAMS), | 115 | SNMP_MIB_ITEM("UdpLite6InDatagrams", UDP_MIB_INDATAGRAMS), |
119 | SNMP_MIB_ITEM("UdpLite6NoPorts", UDP_MIB_NOPORTS), | 116 | SNMP_MIB_ITEM("UdpLite6NoPorts", UDP_MIB_NOPORTS), |
@@ -121,7 +118,6 @@ static struct snmp_mib snmp6_udplite6_list[] = { | |||
121 | SNMP_MIB_ITEM("UdpLite6OutDatagrams", UDP_MIB_OUTDATAGRAMS), | 118 | SNMP_MIB_ITEM("UdpLite6OutDatagrams", UDP_MIB_OUTDATAGRAMS), |
122 | SNMP_MIB_SENTINEL | 119 | SNMP_MIB_SENTINEL |
123 | }; | 120 | }; |
124 | #endif | ||
125 | 121 | ||
126 | static void snmp6_seq_show_icmpv6msg(struct seq_file *seq, void **mib) | 122 | static void snmp6_seq_show_icmpv6msg(struct seq_file *seq, void **mib) |
127 | { | 123 | { |
@@ -180,9 +176,7 @@ static int snmp6_seq_show(struct seq_file *seq, void *v) | |||
180 | snmp6_seq_show_item(seq, (void **)icmpv6_statistics, snmp6_icmp6_list); | 176 | snmp6_seq_show_item(seq, (void **)icmpv6_statistics, snmp6_icmp6_list); |
181 | snmp6_seq_show_icmpv6msg(seq, (void **)icmpv6msg_statistics); | 177 | snmp6_seq_show_icmpv6msg(seq, (void **)icmpv6msg_statistics); |
182 | snmp6_seq_show_item(seq, (void **)udp_stats_in6, snmp6_udp6_list); | 178 | snmp6_seq_show_item(seq, (void **)udp_stats_in6, snmp6_udp6_list); |
183 | #ifdef CONFIG_IP_UDPLITE | ||
184 | snmp6_seq_show_item(seq, (void **)udplite_stats_in6, snmp6_udplite6_list); | 179 | snmp6_seq_show_item(seq, (void **)udplite_stats_in6, snmp6_udplite6_list); |
185 | #endif | ||
186 | } | 180 | } |
187 | return 0; | 181 | return 0; |
188 | } | 182 | } |
diff --git a/net/ipv6/udp_ipv6.c b/net/ipv6/udp.c index 55feac7ba717..53739de829db 100644 --- a/net/ipv6/udp_ipv6.c +++ b/net/ipv6/udp.c | |||
@@ -400,7 +400,7 @@ static inline int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh, | |||
400 | UDP_SKB_CB(skb)->partial_cov = 0; | 400 | UDP_SKB_CB(skb)->partial_cov = 0; |
401 | UDP_SKB_CB(skb)->cscov = skb->len; | 401 | UDP_SKB_CB(skb)->cscov = skb->len; |
402 | 402 | ||
403 | if (IS_PROTO_UDPLITE(proto)) { | 403 | if (proto == IPPROTO_UDPLITE) { |
404 | err = udplite_checksum_init(skb, uh); | 404 | err = udplite_checksum_init(skb, uh); |
405 | if (err) | 405 | if (err) |
406 | return err; | 406 | return err; |
@@ -489,7 +489,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
489 | 489 | ||
490 | if (udp_lib_checksum_complete(skb)) | 490 | if (udp_lib_checksum_complete(skb)) |
491 | goto discard; | 491 | goto discard; |
492 | UDP6_INC_STATS_BH(UDP_MIB_NOPORTS, IS_PROTO_UDPLITE(proto)); | 492 | UDP6_INC_STATS_BH(UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
493 | 493 | ||
494 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev); | 494 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0, dev); |
495 | 495 | ||
@@ -510,11 +510,11 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
510 | 510 | ||
511 | short_packet: | 511 | short_packet: |
512 | LIMIT_NETDEBUG(KERN_DEBUG "UDP%sv6: short packet: %d/%u\n", | 512 | LIMIT_NETDEBUG(KERN_DEBUG "UDP%sv6: short packet: %d/%u\n", |
513 | IS_PROTO_UDPLITE(proto) ? "-Lite" : "", | 513 | proto == IPPROTO_UDPLITE ? "-Lite" : "", |
514 | ulen, skb->len); | 514 | ulen, skb->len); |
515 | 515 | ||
516 | discard: | 516 | discard: |
517 | UDP6_INC_STATS_BH(UDP_MIB_INERRORS, IS_PROTO_UDPLITE(proto)); | 517 | UDP6_INC_STATS_BH(UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE); |
518 | kfree_skb(skb); | 518 | kfree_skb(skb); |
519 | return 0; | 519 | return 0; |
520 | } | 520 | } |
@@ -890,7 +890,7 @@ int udpv6_destroy_sock(struct sock *sk) | |||
890 | int udpv6_setsockopt(struct sock *sk, int level, int optname, | 890 | int udpv6_setsockopt(struct sock *sk, int level, int optname, |
891 | char __user *optval, int optlen) | 891 | char __user *optval, int optlen) |
892 | { | 892 | { |
893 | if (IS_SOL_UDPFAMILY(level)) | 893 | if (level == SOL_UDP || level == SOL_UDPLITE) |
894 | return udp_lib_setsockopt(sk, level, optname, optval, optlen, | 894 | return udp_lib_setsockopt(sk, level, optname, optval, optlen, |
895 | udp_v6_push_pending_frames); | 895 | udp_v6_push_pending_frames); |
896 | return ipv6_setsockopt(sk, level, optname, optval, optlen); | 896 | return ipv6_setsockopt(sk, level, optname, optval, optlen); |
@@ -900,7 +900,7 @@ int udpv6_setsockopt(struct sock *sk, int level, int optname, | |||
900 | int compat_udpv6_setsockopt(struct sock *sk, int level, int optname, | 900 | int compat_udpv6_setsockopt(struct sock *sk, int level, int optname, |
901 | char __user *optval, int optlen) | 901 | char __user *optval, int optlen) |
902 | { | 902 | { |
903 | if (IS_SOL_UDPFAMILY(level)) | 903 | if (level == SOL_UDP || level == SOL_UDPLITE) |
904 | return udp_lib_setsockopt(sk, level, optname, optval, optlen, | 904 | return udp_lib_setsockopt(sk, level, optname, optval, optlen, |
905 | udp_v6_push_pending_frames); | 905 | udp_v6_push_pending_frames); |
906 | return compat_ipv6_setsockopt(sk, level, optname, optval, optlen); | 906 | return compat_ipv6_setsockopt(sk, level, optname, optval, optlen); |
@@ -910,7 +910,7 @@ int compat_udpv6_setsockopt(struct sock *sk, int level, int optname, | |||
910 | int udpv6_getsockopt(struct sock *sk, int level, int optname, | 910 | int udpv6_getsockopt(struct sock *sk, int level, int optname, |
911 | char __user *optval, int __user *optlen) | 911 | char __user *optval, int __user *optlen) |
912 | { | 912 | { |
913 | if (IS_SOL_UDPFAMILY(level)) | 913 | if (level == SOL_UDP || level == SOL_UDPLITE) |
914 | return udp_lib_getsockopt(sk, level, optname, optval, optlen); | 914 | return udp_lib_getsockopt(sk, level, optname, optval, optlen); |
915 | return ipv6_getsockopt(sk, level, optname, optval, optlen); | 915 | return ipv6_getsockopt(sk, level, optname, optval, optlen); |
916 | } | 916 | } |
@@ -919,7 +919,7 @@ int udpv6_getsockopt(struct sock *sk, int level, int optname, | |||
919 | int compat_udpv6_getsockopt(struct sock *sk, int level, int optname, | 919 | int compat_udpv6_getsockopt(struct sock *sk, int level, int optname, |
920 | char __user *optval, int __user *optlen) | 920 | char __user *optval, int __user *optlen) |
921 | { | 921 | { |
922 | if (IS_SOL_UDPFAMILY(level)) | 922 | if (level == SOL_UDP || level == SOL_UDPLITE) |
923 | return udp_lib_getsockopt(sk, level, optname, optval, optlen); | 923 | return udp_lib_getsockopt(sk, level, optname, optval, optlen); |
924 | return compat_ipv6_getsockopt(sk, level, optname, optval, optlen); | 924 | return compat_ipv6_getsockopt(sk, level, optname, optval, optlen); |
925 | } | 925 | } |
diff --git a/net/ipv6/udplite_ipv6.c b/net/ipv6/udplite.c index 87d4202522ee..87d4202522ee 100644 --- a/net/ipv6/udplite_ipv6.c +++ b/net/ipv6/udplite.c | |||