aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/raw.c')
-rw-r--r--net/ipv4/raw.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 8ca3eb06ba04..1ebd29abe79c 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -805,7 +805,7 @@ out:
805 return copied; 805 return copied;
806} 806}
807 807
808static int raw_init(struct sock *sk) 808static int raw_sk_init(struct sock *sk)
809{ 809{
810 struct raw_sock *rp = raw_sk(sk); 810 struct raw_sock *rp = raw_sk(sk);
811 811
@@ -970,7 +970,7 @@ struct proto raw_prot = {
970 .connect = ip4_datagram_connect, 970 .connect = ip4_datagram_connect,
971 .disconnect = __udp_disconnect, 971 .disconnect = __udp_disconnect,
972 .ioctl = raw_ioctl, 972 .ioctl = raw_ioctl,
973 .init = raw_init, 973 .init = raw_sk_init,
974 .setsockopt = raw_setsockopt, 974 .setsockopt = raw_setsockopt,
975 .getsockopt = raw_getsockopt, 975 .getsockopt = raw_getsockopt,
976 .sendmsg = raw_sendmsg, 976 .sendmsg = raw_sendmsg,
@@ -1133,4 +1133,28 @@ void __init raw_proc_exit(void)
1133{ 1133{
1134 unregister_pernet_subsys(&raw_net_ops); 1134 unregister_pernet_subsys(&raw_net_ops);
1135} 1135}
1136
1137static void raw_sysctl_init_net(struct net *net)
1138{
1139#ifdef CONFIG_NET_L3_MASTER_DEV
1140 net->ipv4.sysctl_raw_l3mdev_accept = 1;
1141#endif
1142}
1143
1144static int __net_init raw_sysctl_init(struct net *net)
1145{
1146 raw_sysctl_init_net(net);
1147 return 0;
1148}
1149
1150static struct pernet_operations __net_initdata raw_sysctl_ops = {
1151 .init = raw_sysctl_init,
1152};
1153
1154void __init raw_init(void)
1155{
1156 raw_sysctl_init_net(&init_net);
1157 if (register_pernet_subsys(&raw_sysctl_ops))
1158 panic("RAW: failed to init sysctl parameters.\n");
1159}
1136#endif /* CONFIG_PROC_FS */ 1160#endif /* CONFIG_PROC_FS */