diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-09-12 07:05:38 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:49:09 -0400 |
commit | b4b510290b056b86611757ce1175a230f1080f53 (patch) | |
tree | 7bd1d45855ac7457be6d50338c60751f19e436d9 /drivers | |
parent | e9dc86534051b78e41e5b746cccc291b57a3a311 (diff) |
[NET]: Support multiple network namespaces with netlink
Each netlink socket will live in exactly one network namespace,
this includes the controlling kernel sockets.
This patch updates all of the existing netlink protocols
to only support the initial network namespace. Request
by clients in other namespaces will get -ECONREFUSED.
As they would if the kernel did not have the support for
that netlink protocol compiled in.
As each netlink protocol is updated to be multiple network
namespace safe it can register multiple kernel sockets
to acquire a presence in the rest of the network namespaces.
The implementation in af_netlink is a simple filter implementation
at hash table insertion and hash table look up time.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/connector/connector.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_netlink.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_transport_iscsi.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c index a7b9e9bb3e8d..569070997cc1 100644 --- a/drivers/connector/connector.c +++ b/drivers/connector/connector.c | |||
@@ -446,7 +446,7 @@ static int __devinit cn_init(void) | |||
446 | dev->id.idx = cn_idx; | 446 | dev->id.idx = cn_idx; |
447 | dev->id.val = cn_val; | 447 | dev->id.val = cn_val; |
448 | 448 | ||
449 | dev->nls = netlink_kernel_create(NETLINK_CONNECTOR, | 449 | dev->nls = netlink_kernel_create(&init_net, NETLINK_CONNECTOR, |
450 | CN_NETLINK_USERS + 0xf, | 450 | CN_NETLINK_USERS + 0xf, |
451 | dev->input, NULL, THIS_MODULE); | 451 | dev->input, NULL, THIS_MODULE); |
452 | if (!dev->nls) | 452 | if (!dev->nls) |
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c index 4bf9aa547c78..163acf6ad2d3 100644 --- a/drivers/scsi/scsi_netlink.c +++ b/drivers/scsi/scsi_netlink.c | |||
@@ -167,7 +167,7 @@ scsi_netlink_init(void) | |||
167 | return; | 167 | return; |
168 | } | 168 | } |
169 | 169 | ||
170 | scsi_nl_sock = netlink_kernel_create(NETLINK_SCSITRANSPORT, | 170 | scsi_nl_sock = netlink_kernel_create(&init_net, NETLINK_SCSITRANSPORT, |
171 | SCSI_NL_GRP_CNT, scsi_nl_rcv, NULL, | 171 | SCSI_NL_GRP_CNT, scsi_nl_rcv, NULL, |
172 | THIS_MODULE); | 172 | THIS_MODULE); |
173 | if (!scsi_nl_sock) { | 173 | if (!scsi_nl_sock) { |
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index 34c1860a259d..4916f01230dc 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
@@ -1523,7 +1523,7 @@ static __init int iscsi_transport_init(void) | |||
1523 | if (err) | 1523 | if (err) |
1524 | goto unregister_conn_class; | 1524 | goto unregister_conn_class; |
1525 | 1525 | ||
1526 | nls = netlink_kernel_create(NETLINK_ISCSI, 1, iscsi_if_rx, NULL, | 1526 | nls = netlink_kernel_create(&init_net, NETLINK_ISCSI, 1, iscsi_if_rx, NULL, |
1527 | THIS_MODULE); | 1527 | THIS_MODULE); |
1528 | if (!nls) { | 1528 | if (!nls) { |
1529 | err = -ENOBUFS; | 1529 | err = -ENOBUFS; |