aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp')
-rw-r--r--net/sctp/ipv6.c92
-rw-r--r--net/sctp/protocol.c94
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
863static const struct proto_ops inet6_seqpacket_ops = { 863static 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
883static struct inet_protosw sctpv6_seqpacket_protosw = { 887static struct inet_protosw sctpv6_seqpacket_protosw = {
@@ -911,31 +915,35 @@ static struct inet6_protocol sctpv6_protocol = {
911}; 915};
912 916
913static struct sctp_af sctp_ipv6_specific = { 917static 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
941static struct sctp_pf sctp_pf_inet6_specific = { 949static 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. */
833static const struct proto_ops inet_seqpacket_ops = { 833static 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. */
882static struct sctp_af sctp_ipv4_specific = { 886static 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
910struct sctp_pf *sctp_get_pf_specific(sa_family_t family) { 918struct sctp_pf *sctp_get_pf_specific(sa_family_t family) {