aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2009-11-05 23:44:37 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-06 00:40:17 -0500
commit13f18aa05f5abe135f47b6417537ae2b2fedc18c (patch)
tree3bcf8c52bd9d957fd09a87224c9d44566071f981
parent89794a6f3bf6db552b1ff4d2ad42fdd8739ac2a2 (diff)
net: drop capability from protocol definitions
struct can_proto had a capability field which wasn't ever used. It is dropped entirely. struct inet_protosw had a capability field which can be more clearly expressed in the code by just checking if sock->type = SOCK_RAW. Signed-off-by: Eric Paris <eparis@redhat.com> Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/linux/can/core.h2
-rw-r--r--include/net/protocol.h4
-rw-r--r--net/can/af_can.c5
-rw-r--r--net/can/bcm.c1
-rw-r--r--net/can/raw.c1
-rw-r--r--net/dccp/ipv4.c1
-rw-r--r--net/dccp/ipv6.c1
-rw-r--r--net/ipv4/af_inet.c5
-rw-r--r--net/ipv4/udplite.c1
-rw-r--r--net/ipv6/af_inet6.c2
-rw-r--r--net/ipv6/raw.c1
-rw-r--r--net/ipv6/tcp_ipv6.c1
-rw-r--r--net/ipv6/udp.c1
-rw-r--r--net/ipv6/udplite.c1
-rw-r--r--net/sctp/ipv6.c2
-rw-r--r--net/sctp/protocol.c2
16 files changed, 2 insertions, 29 deletions
diff --git a/include/linux/can/core.h b/include/linux/can/core.h
index 25085cbadcfc..6c507bea275f 100644
--- a/include/linux/can/core.h
+++ b/include/linux/can/core.h
@@ -32,14 +32,12 @@
32 * struct can_proto - CAN protocol structure 32 * struct can_proto - CAN protocol structure
33 * @type: type argument in socket() syscall, e.g. SOCK_DGRAM. 33 * @type: type argument in socket() syscall, e.g. SOCK_DGRAM.
34 * @protocol: protocol number in socket() syscall. 34 * @protocol: protocol number in socket() syscall.
35 * @capability: capability needed to open the socket, or -1 for no restriction.
36 * @ops: pointer to struct proto_ops for sock->ops. 35 * @ops: pointer to struct proto_ops for sock->ops.
37 * @prot: pointer to struct proto structure. 36 * @prot: pointer to struct proto structure.
38 */ 37 */
39struct can_proto { 38struct can_proto {
40 int type; 39 int type;
41 int protocol; 40 int protocol;
42 int capability;
43 struct proto_ops *ops; 41 struct proto_ops *ops;
44 struct proto *prot; 42 struct proto *prot;
45}; 43};
diff --git a/include/net/protocol.h b/include/net/protocol.h
index 89932d45da59..f1effdd3c265 100644
--- a/include/net/protocol.h
+++ b/include/net/protocol.h
@@ -82,10 +82,6 @@ struct inet_protosw {
82 struct proto *prot; 82 struct proto *prot;
83 const struct proto_ops *ops; 83 const struct proto_ops *ops;
84 84
85 int capability; /* Which (if any) capability do
86 * we need to use this socket
87 * interface?
88 */
89 char no_check; /* checksum on rcv/xmit/none? */ 85 char no_check; /* checksum on rcv/xmit/none? */
90 unsigned char flags; /* See INET_PROTOSW_* below. */ 86 unsigned char flags; /* See INET_PROTOSW_* below. */
91}; 87};
diff --git a/net/can/af_can.c b/net/can/af_can.c
index 3f2eb27e1ffb..9c0426dc3184 100644
--- a/net/can/af_can.c
+++ b/net/can/af_can.c
@@ -160,11 +160,6 @@ static int can_create(struct net *net, struct socket *sock, int protocol)
160 goto errout; 160 goto errout;
161 } 161 }
162 162
163 if (cp->capability >= 0 && !capable(cp->capability)) {
164 err = -EPERM;
165 goto errout;
166 }
167
168 sock->ops = cp->ops; 163 sock->ops = cp->ops;
169 164
170 sk = sk_alloc(net, PF_CAN, GFP_KERNEL, cp->prot); 165 sk = sk_alloc(net, PF_CAN, GFP_KERNEL, cp->prot);
diff --git a/net/can/bcm.c b/net/can/bcm.c
index 2f47039c79dd..67b5433db13b 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -1576,7 +1576,6 @@ static struct proto bcm_proto __read_mostly = {
1576static struct can_proto bcm_can_proto __read_mostly = { 1576static struct can_proto bcm_can_proto __read_mostly = {
1577 .type = SOCK_DGRAM, 1577 .type = SOCK_DGRAM,
1578 .protocol = CAN_BCM, 1578 .protocol = CAN_BCM,
1579 .capability = -1,
1580 .ops = &bcm_ops, 1579 .ops = &bcm_ops,
1581 .prot = &bcm_proto, 1580 .prot = &bcm_proto,
1582}; 1581};
diff --git a/net/can/raw.c b/net/can/raw.c
index 6e77db58b9e6..abca920440b5 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -742,7 +742,6 @@ static struct proto raw_proto __read_mostly = {
742static struct can_proto raw_can_proto __read_mostly = { 742static struct can_proto raw_can_proto __read_mostly = {
743 .type = SOCK_RAW, 743 .type = SOCK_RAW,
744 .protocol = CAN_RAW, 744 .protocol = CAN_RAW,
745 .capability = -1,
746 .ops = &raw_ops, 745 .ops = &raw_ops,
747 .prot = &raw_proto, 746 .prot = &raw_proto,
748}; 747};
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index 00028d4b09d9..2423a0866733 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -991,7 +991,6 @@ static struct inet_protosw dccp_v4_protosw = {
991 .protocol = IPPROTO_DCCP, 991 .protocol = IPPROTO_DCCP,
992 .prot = &dccp_v4_prot, 992 .prot = &dccp_v4_prot,
993 .ops = &inet_dccp_ops, 993 .ops = &inet_dccp_ops,
994 .capability = -1,
995 .no_check = 0, 994 .no_check = 0,
996 .flags = INET_PROTOSW_ICSK, 995 .flags = INET_PROTOSW_ICSK,
997}; 996};
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 6d89f9f7d5d8..50ea91a77705 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -1185,7 +1185,6 @@ static struct inet_protosw dccp_v6_protosw = {
1185 .protocol = IPPROTO_DCCP, 1185 .protocol = IPPROTO_DCCP,
1186 .prot = &dccp_v6_prot, 1186 .prot = &dccp_v6_prot,
1187 .ops = &inet6_dccp_ops, 1187 .ops = &inet6_dccp_ops,
1188 .capability = -1,
1189 .flags = INET_PROTOSW_ICSK, 1188 .flags = INET_PROTOSW_ICSK,
1190}; 1189};
1191 1190
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 538e84d0bcba..180ec4c94919 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -325,7 +325,7 @@ lookup_protocol:
325 } 325 }
326 326
327 err = -EPERM; 327 err = -EPERM;
328 if (answer->capability > 0 && !capable(answer->capability)) 328 if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
329 goto out_rcu_unlock; 329 goto out_rcu_unlock;
330 330
331 err = -EAFNOSUPPORT; 331 err = -EAFNOSUPPORT;
@@ -947,7 +947,6 @@ static struct inet_protosw inetsw_array[] =
947 .protocol = IPPROTO_TCP, 947 .protocol = IPPROTO_TCP,
948 .prot = &tcp_prot, 948 .prot = &tcp_prot,
949 .ops = &inet_stream_ops, 949 .ops = &inet_stream_ops,
950 .capability = -1,
951 .no_check = 0, 950 .no_check = 0,
952 .flags = INET_PROTOSW_PERMANENT | 951 .flags = INET_PROTOSW_PERMANENT |
953 INET_PROTOSW_ICSK, 952 INET_PROTOSW_ICSK,
@@ -958,7 +957,6 @@ static struct inet_protosw inetsw_array[] =
958 .protocol = IPPROTO_UDP, 957 .protocol = IPPROTO_UDP,
959 .prot = &udp_prot, 958 .prot = &udp_prot,
960 .ops = &inet_dgram_ops, 959 .ops = &inet_dgram_ops,
961 .capability = -1,
962 .no_check = UDP_CSUM_DEFAULT, 960 .no_check = UDP_CSUM_DEFAULT,
963 .flags = INET_PROTOSW_PERMANENT, 961 .flags = INET_PROTOSW_PERMANENT,
964 }, 962 },
@@ -969,7 +967,6 @@ static struct inet_protosw inetsw_array[] =
969 .protocol = IPPROTO_IP, /* wild card */ 967 .protocol = IPPROTO_IP, /* wild card */
970 .prot = &raw_prot, 968 .prot = &raw_prot,
971 .ops = &inet_sockraw_ops, 969 .ops = &inet_sockraw_ops,
972 .capability = CAP_NET_RAW,
973 .no_check = UDP_CSUM_DEFAULT, 970 .no_check = UDP_CSUM_DEFAULT,
974 .flags = INET_PROTOSW_REUSE, 971 .flags = INET_PROTOSW_REUSE,
975 } 972 }
diff --git a/net/ipv4/udplite.c b/net/ipv4/udplite.c
index 470c504b9554..66f79513f4a5 100644
--- a/net/ipv4/udplite.c
+++ b/net/ipv4/udplite.c
@@ -64,7 +64,6 @@ static struct inet_protosw udplite4_protosw = {
64 .protocol = IPPROTO_UDPLITE, 64 .protocol = IPPROTO_UDPLITE,
65 .prot = &udplite_prot, 65 .prot = &udplite_prot,
66 .ops = &inet_dgram_ops, 66 .ops = &inet_dgram_ops,
67 .capability = -1,
68 .no_check = 0, /* must checksum (RFC 3828) */ 67 .no_check = 0, /* must checksum (RFC 3828) */
69 .flags = INET_PROTOSW_PERMANENT, 68 .flags = INET_PROTOSW_PERMANENT,
70}; 69};
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 9105b25defe5..1b3889356599 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -158,7 +158,7 @@ lookup_protocol:
158 } 158 }
159 159
160 err = -EPERM; 160 err = -EPERM;
161 if (answer->capability > 0 && !capable(answer->capability)) 161 if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
162 goto out_rcu_unlock; 162 goto out_rcu_unlock;
163 163
164 sock->ops = answer->ops; 164 sock->ops = answer->ops;
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index cb834ab7f071..818ef21ba76d 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -1336,7 +1336,6 @@ static struct inet_protosw rawv6_protosw = {
1336 .protocol = IPPROTO_IP, /* wild card */ 1336 .protocol = IPPROTO_IP, /* wild card */
1337 .prot = &rawv6_prot, 1337 .prot = &rawv6_prot,
1338 .ops = &inet6_sockraw_ops, 1338 .ops = &inet6_sockraw_ops,
1339 .capability = CAP_NET_RAW,
1340 .no_check = UDP_CSUM_DEFAULT, 1339 .no_check = UDP_CSUM_DEFAULT,
1341 .flags = INET_PROTOSW_REUSE, 1340 .flags = INET_PROTOSW_REUSE,
1342}; 1341};
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 34925f089e07..696a22f034e8 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -2112,7 +2112,6 @@ static struct inet_protosw tcpv6_protosw = {
2112 .protocol = IPPROTO_TCP, 2112 .protocol = IPPROTO_TCP,
2113 .prot = &tcpv6_prot, 2113 .prot = &tcpv6_prot,
2114 .ops = &inet6_stream_ops, 2114 .ops = &inet6_stream_ops,
2115 .capability = -1,
2116 .no_check = 0, 2115 .no_check = 0,
2117 .flags = INET_PROTOSW_PERMANENT | 2116 .flags = INET_PROTOSW_PERMANENT |
2118 INET_PROTOSW_ICSK, 2117 INET_PROTOSW_ICSK,
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index d3b59d73f507..bbe2f3e445fc 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1286,7 +1286,6 @@ static struct inet_protosw udpv6_protosw = {
1286 .protocol = IPPROTO_UDP, 1286 .protocol = IPPROTO_UDP,
1287 .prot = &udpv6_prot, 1287 .prot = &udpv6_prot,
1288 .ops = &inet6_dgram_ops, 1288 .ops = &inet6_dgram_ops,
1289 .capability =-1,
1290 .no_check = UDP_CSUM_DEFAULT, 1289 .no_check = UDP_CSUM_DEFAULT,
1291 .flags = INET_PROTOSW_PERMANENT, 1290 .flags = INET_PROTOSW_PERMANENT,
1292}; 1291};
diff --git a/net/ipv6/udplite.c b/net/ipv6/udplite.c
index d737a27ee010..6ea6938919e6 100644
--- a/net/ipv6/udplite.c
+++ b/net/ipv6/udplite.c
@@ -62,7 +62,6 @@ static struct inet_protosw udplite6_protosw = {
62 .protocol = IPPROTO_UDPLITE, 62 .protocol = IPPROTO_UDPLITE,
63 .prot = &udplitev6_prot, 63 .prot = &udplitev6_prot,
64 .ops = &inet6_dgram_ops, 64 .ops = &inet6_dgram_ops,
65 .capability = -1,
66 .no_check = 0, 65 .no_check = 0,
67 .flags = INET_PROTOSW_PERMANENT, 66 .flags = INET_PROTOSW_PERMANENT,
68}; 67};
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index bb280e60e00a..bacd6a7318be 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -930,7 +930,6 @@ static struct inet_protosw sctpv6_seqpacket_protosw = {
930 .protocol = IPPROTO_SCTP, 930 .protocol = IPPROTO_SCTP,
931 .prot = &sctpv6_prot, 931 .prot = &sctpv6_prot,
932 .ops = &inet6_seqpacket_ops, 932 .ops = &inet6_seqpacket_ops,
933 .capability = -1,
934 .no_check = 0, 933 .no_check = 0,
935 .flags = SCTP_PROTOSW_FLAG 934 .flags = SCTP_PROTOSW_FLAG
936}; 935};
@@ -939,7 +938,6 @@ static struct inet_protosw sctpv6_stream_protosw = {
939 .protocol = IPPROTO_SCTP, 938 .protocol = IPPROTO_SCTP,
940 .prot = &sctpv6_prot, 939 .prot = &sctpv6_prot,
941 .ops = &inet6_seqpacket_ops, 940 .ops = &inet6_seqpacket_ops,
942 .capability = -1,
943 .no_check = 0, 941 .no_check = 0,
944 .flags = SCTP_PROTOSW_FLAG, 942 .flags = SCTP_PROTOSW_FLAG,
945}; 943};
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index fe44c57101de..08ef203d36ac 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -909,7 +909,6 @@ static struct inet_protosw sctp_seqpacket_protosw = {
909 .protocol = IPPROTO_SCTP, 909 .protocol = IPPROTO_SCTP,
910 .prot = &sctp_prot, 910 .prot = &sctp_prot,
911 .ops = &inet_seqpacket_ops, 911 .ops = &inet_seqpacket_ops,
912 .capability = -1,
913 .no_check = 0, 912 .no_check = 0,
914 .flags = SCTP_PROTOSW_FLAG 913 .flags = SCTP_PROTOSW_FLAG
915}; 914};
@@ -918,7 +917,6 @@ static struct inet_protosw sctp_stream_protosw = {
918 .protocol = IPPROTO_SCTP, 917 .protocol = IPPROTO_SCTP,
919 .prot = &sctp_prot, 918 .prot = &sctp_prot,
920 .ops = &inet_seqpacket_ops, 919 .ops = &inet_seqpacket_ops,
921 .capability = -1,
922 .no_check = 0, 920 .no_check = 0,
923 .flags = SCTP_PROTOSW_FLAG 921 .flags = SCTP_PROTOSW_FLAG
924}; 922};