diff options
Diffstat (limited to 'net/sctp')
| -rw-r--r-- | net/sctp/ipv6.c | 92 | ||||
| -rw-r--r-- | net/sctp/protocol.c | 94 |
2 files changed, 101 insertions, 85 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index 2e266129a764..c20d282fac06 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
| @@ -861,23 +861,27 @@ static int sctp_inet6_supported_addrs(const struct sctp_sock *opt, | |||
| 861 | } | 861 | } |
| 862 | 862 | ||
| 863 | static const struct proto_ops inet6_seqpacket_ops = { | 863 | static const struct proto_ops inet6_seqpacket_ops = { |
| 864 | .family = PF_INET6, | 864 | .family = PF_INET6, |
| 865 | .owner = THIS_MODULE, | 865 | .owner = THIS_MODULE, |
| 866 | .release = inet6_release, | 866 | .release = inet6_release, |
| 867 | .bind = inet6_bind, | 867 | .bind = inet6_bind, |
| 868 | .connect = inet_dgram_connect, | 868 | .connect = inet_dgram_connect, |
| 869 | .socketpair = sock_no_socketpair, | 869 | .socketpair = sock_no_socketpair, |
| 870 | .accept = inet_accept, | 870 | .accept = inet_accept, |
| 871 | .getname = inet6_getname, | 871 | .getname = inet6_getname, |
| 872 | .poll = sctp_poll, | 872 | .poll = sctp_poll, |
| 873 | .ioctl = inet6_ioctl, | 873 | .ioctl = inet6_ioctl, |
| 874 | .listen = sctp_inet_listen, | 874 | .listen = sctp_inet_listen, |
| 875 | .shutdown = inet_shutdown, | 875 | .shutdown = inet_shutdown, |
| 876 | .setsockopt = sock_common_setsockopt, | 876 | .setsockopt = sock_common_setsockopt, |
| 877 | .getsockopt = sock_common_getsockopt, | 877 | .getsockopt = sock_common_getsockopt, |
| 878 | .sendmsg = inet_sendmsg, | 878 | .sendmsg = inet_sendmsg, |
| 879 | .recvmsg = sock_common_recvmsg, | 879 | .recvmsg = sock_common_recvmsg, |
| 880 | .mmap = sock_no_mmap, | 880 | .mmap = sock_no_mmap, |
| 881 | #ifdef CONFIG_COMPAT | ||
| 882 | .compat_setsockopt = compat_sock_common_setsockopt, | ||
| 883 | .compat_getsockopt = compat_sock_common_getsockopt, | ||
| 884 | #endif | ||
| 881 | }; | 885 | }; |
| 882 | 886 | ||
| 883 | static struct inet_protosw sctpv6_seqpacket_protosw = { | 887 | static struct inet_protosw sctpv6_seqpacket_protosw = { |
| @@ -911,31 +915,35 @@ static struct inet6_protocol sctpv6_protocol = { | |||
| 911 | }; | 915 | }; |
| 912 | 916 | ||
| 913 | static struct sctp_af sctp_ipv6_specific = { | 917 | static struct sctp_af sctp_ipv6_specific = { |
| 914 | .sctp_xmit = sctp_v6_xmit, | 918 | .sa_family = AF_INET6, |
| 915 | .setsockopt = ipv6_setsockopt, | 919 | .sctp_xmit = sctp_v6_xmit, |
| 916 | .getsockopt = ipv6_getsockopt, | 920 | .setsockopt = ipv6_setsockopt, |
| 917 | .get_dst = sctp_v6_get_dst, | 921 | .getsockopt = ipv6_getsockopt, |
| 918 | .get_saddr = sctp_v6_get_saddr, | 922 | .get_dst = sctp_v6_get_dst, |
| 919 | .copy_addrlist = sctp_v6_copy_addrlist, | 923 | .get_saddr = sctp_v6_get_saddr, |
| 920 | .from_skb = sctp_v6_from_skb, | 924 | .copy_addrlist = sctp_v6_copy_addrlist, |
| 921 | .from_sk = sctp_v6_from_sk, | 925 | .from_skb = sctp_v6_from_skb, |
| 922 | .to_sk_saddr = sctp_v6_to_sk_saddr, | 926 | .from_sk = sctp_v6_from_sk, |
| 923 | .to_sk_daddr = sctp_v6_to_sk_daddr, | 927 | .to_sk_saddr = sctp_v6_to_sk_saddr, |
| 924 | .from_addr_param = sctp_v6_from_addr_param, | 928 | .to_sk_daddr = sctp_v6_to_sk_daddr, |
| 925 | .to_addr_param = sctp_v6_to_addr_param, | 929 | .from_addr_param = sctp_v6_from_addr_param, |
| 926 | .dst_saddr = sctp_v6_dst_saddr, | 930 | .to_addr_param = sctp_v6_to_addr_param, |
| 927 | .cmp_addr = sctp_v6_cmp_addr, | 931 | .dst_saddr = sctp_v6_dst_saddr, |
| 928 | .scope = sctp_v6_scope, | 932 | .cmp_addr = sctp_v6_cmp_addr, |
| 929 | .addr_valid = sctp_v6_addr_valid, | 933 | .scope = sctp_v6_scope, |
| 930 | .inaddr_any = sctp_v6_inaddr_any, | 934 | .addr_valid = sctp_v6_addr_valid, |
| 931 | .is_any = sctp_v6_is_any, | 935 | .inaddr_any = sctp_v6_inaddr_any, |
| 932 | .available = sctp_v6_available, | 936 | .is_any = sctp_v6_is_any, |
| 933 | .skb_iif = sctp_v6_skb_iif, | 937 | .available = sctp_v6_available, |
| 934 | .is_ce = sctp_v6_is_ce, | 938 | .skb_iif = sctp_v6_skb_iif, |
| 935 | .seq_dump_addr = sctp_v6_seq_dump_addr, | 939 | .is_ce = sctp_v6_is_ce, |
| 936 | .net_header_len = sizeof(struct ipv6hdr), | 940 | .seq_dump_addr = sctp_v6_seq_dump_addr, |
| 937 | .sockaddr_len = sizeof(struct sockaddr_in6), | 941 | .net_header_len = sizeof(struct ipv6hdr), |
| 938 | .sa_family = AF_INET6, | 942 | .sockaddr_len = sizeof(struct sockaddr_in6), |
| 943 | #ifdef CONFIG_COMPAT | ||
| 944 | .compat_setsockopt = compat_ipv6_setsockopt, | ||
| 945 | .compat_getsockopt = compat_ipv6_getsockopt, | ||
| 946 | #endif | ||
| 939 | }; | 947 | }; |
| 940 | 948 | ||
| 941 | static struct sctp_pf sctp_pf_inet6_specific = { | 949 | static struct sctp_pf sctp_pf_inet6_specific = { |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index de693b43c8ea..2088aa992b7a 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
| @@ -831,24 +831,28 @@ static struct notifier_block sctp_inetaddr_notifier = { | |||
| 831 | 831 | ||
| 832 | /* Socket operations. */ | 832 | /* Socket operations. */ |
| 833 | static const struct proto_ops inet_seqpacket_ops = { | 833 | static const struct proto_ops inet_seqpacket_ops = { |
| 834 | .family = PF_INET, | 834 | .family = PF_INET, |
| 835 | .owner = THIS_MODULE, | 835 | .owner = THIS_MODULE, |
| 836 | .release = inet_release, /* Needs to be wrapped... */ | 836 | .release = inet_release, /* Needs to be wrapped... */ |
| 837 | .bind = inet_bind, | 837 | .bind = inet_bind, |
| 838 | .connect = inet_dgram_connect, | 838 | .connect = inet_dgram_connect, |
| 839 | .socketpair = sock_no_socketpair, | 839 | .socketpair = sock_no_socketpair, |
| 840 | .accept = inet_accept, | 840 | .accept = inet_accept, |
| 841 | .getname = inet_getname, /* Semantics are different. */ | 841 | .getname = inet_getname, /* Semantics are different. */ |
| 842 | .poll = sctp_poll, | 842 | .poll = sctp_poll, |
| 843 | .ioctl = inet_ioctl, | 843 | .ioctl = inet_ioctl, |
| 844 | .listen = sctp_inet_listen, | 844 | .listen = sctp_inet_listen, |
| 845 | .shutdown = inet_shutdown, /* Looks harmless. */ | 845 | .shutdown = inet_shutdown, /* Looks harmless. */ |
| 846 | .setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem. */ | 846 | .setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem */ |
| 847 | .getsockopt = sock_common_getsockopt, | 847 | .getsockopt = sock_common_getsockopt, |
| 848 | .sendmsg = inet_sendmsg, | 848 | .sendmsg = inet_sendmsg, |
| 849 | .recvmsg = sock_common_recvmsg, | 849 | .recvmsg = sock_common_recvmsg, |
| 850 | .mmap = sock_no_mmap, | 850 | .mmap = sock_no_mmap, |
| 851 | .sendpage = sock_no_sendpage, | 851 | .sendpage = sock_no_sendpage, |
| 852 | #ifdef CONFIG_COMPAT | ||
| 853 | .compat_setsockopt = compat_sock_common_setsockopt, | ||
| 854 | .compat_getsockopt = compat_sock_common_getsockopt, | ||
| 855 | #endif | ||
| 852 | }; | 856 | }; |
| 853 | 857 | ||
| 854 | /* Registration with AF_INET family. */ | 858 | /* Registration with AF_INET family. */ |
| @@ -880,31 +884,35 @@ static struct net_protocol sctp_protocol = { | |||
| 880 | 884 | ||
| 881 | /* IPv4 address related functions. */ | 885 | /* IPv4 address related functions. */ |
| 882 | static struct sctp_af sctp_ipv4_specific = { | 886 | static struct sctp_af sctp_ipv4_specific = { |
| 883 | .sctp_xmit = sctp_v4_xmit, | 887 | .sa_family = AF_INET, |
| 884 | .setsockopt = ip_setsockopt, | 888 | .sctp_xmit = sctp_v4_xmit, |
| 885 | .getsockopt = ip_getsockopt, | 889 | .setsockopt = ip_setsockopt, |
| 886 | .get_dst = sctp_v4_get_dst, | 890 | .getsockopt = ip_getsockopt, |
| 887 | .get_saddr = sctp_v4_get_saddr, | 891 | .get_dst = sctp_v4_get_dst, |
| 888 | .copy_addrlist = sctp_v4_copy_addrlist, | 892 | .get_saddr = sctp_v4_get_saddr, |
| 889 | .from_skb = sctp_v4_from_skb, | 893 | .copy_addrlist = sctp_v4_copy_addrlist, |
| 890 | .from_sk = sctp_v4_from_sk, | 894 | .from_skb = sctp_v4_from_skb, |
| 891 | .to_sk_saddr = sctp_v4_to_sk_saddr, | 895 | .from_sk = sctp_v4_from_sk, |
| 892 | .to_sk_daddr = sctp_v4_to_sk_daddr, | 896 | .to_sk_saddr = sctp_v4_to_sk_saddr, |
| 893 | .from_addr_param= sctp_v4_from_addr_param, | 897 | .to_sk_daddr = sctp_v4_to_sk_daddr, |
| 894 | .to_addr_param = sctp_v4_to_addr_param, | 898 | .from_addr_param = sctp_v4_from_addr_param, |
| 895 | .dst_saddr = sctp_v4_dst_saddr, | 899 | .to_addr_param = sctp_v4_to_addr_param, |
| 896 | .cmp_addr = sctp_v4_cmp_addr, | 900 | .dst_saddr = sctp_v4_dst_saddr, |
| 897 | .addr_valid = sctp_v4_addr_valid, | 901 | .cmp_addr = sctp_v4_cmp_addr, |
| 898 | .inaddr_any = sctp_v4_inaddr_any, | 902 | .addr_valid = sctp_v4_addr_valid, |
| 899 | .is_any = sctp_v4_is_any, | 903 | .inaddr_any = sctp_v4_inaddr_any, |
| 900 | .available = sctp_v4_available, | 904 | .is_any = sctp_v4_is_any, |
| 901 | .scope = sctp_v4_scope, | 905 | .available = sctp_v4_available, |
| 902 | .skb_iif = sctp_v4_skb_iif, | 906 | .scope = sctp_v4_scope, |
| 903 | .is_ce = sctp_v4_is_ce, | 907 | .skb_iif = sctp_v4_skb_iif, |
| 904 | .seq_dump_addr = sctp_v4_seq_dump_addr, | 908 | .is_ce = sctp_v4_is_ce, |
| 905 | .net_header_len = sizeof(struct iphdr), | 909 | .seq_dump_addr = sctp_v4_seq_dump_addr, |
| 906 | .sockaddr_len = sizeof(struct sockaddr_in), | 910 | .net_header_len = sizeof(struct iphdr), |
| 907 | .sa_family = AF_INET, | 911 | .sockaddr_len = sizeof(struct sockaddr_in), |
| 912 | #ifdef CONFIG_COMPAT | ||
| 913 | .compat_setsockopt = compat_ip_setsockopt, | ||
| 914 | .compat_getsockopt = compat_ip_getsockopt, | ||
| 915 | #endif | ||
| 908 | }; | 916 | }; |
| 909 | 917 | ||
| 910 | struct sctp_pf *sctp_get_pf_specific(sa_family_t family) { | 918 | struct sctp_pf *sctp_get_pf_specific(sa_family_t family) { |
