diff options
author | Rob Landley <rob@landley.net> | 2011-05-23 22:46:56 -0400 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2011-05-25 09:46:39 -0400 |
commit | e75762fdcd27c1d0293d9160b3ac6dcb3371272a (patch) | |
tree | 9bf70b521a8cc3b6938a4e3baec762b6a95f8611 | |
parent | fe1cbabaea5e99a93bafe12fbf1b3b9cc71b610a (diff) |
net/9p: enable 9p to work in non-default network namespace
Teach 9p filesystem to work in container with non-default network namespace.
(Note: I also patched the unix domain socket code but don't have a test case
for that. It's the same fix, I just don't have a server for it...)
To test, run diod server (http://code.google.com/p/diod):
diod -n -f -L stderr -l 172.23.255.1:9999 -c /dev/null -e /root
and then mount like so:
mount -t 9p -o port=9999,aname=/root,version=9p2000.L 172.23.255.1 /mnt
A container test environment is described at http://landley.net/lxc
Signed-off-by: Rob Landley <rob@landley.net>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r-- | net/9p/trans_fd.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index 4a9084395d35..fdfdb5747f63 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c | |||
@@ -916,8 +916,8 @@ p9_fd_create_tcp(struct p9_client *client, const char *addr, char *args) | |||
916 | sin_server.sin_family = AF_INET; | 916 | sin_server.sin_family = AF_INET; |
917 | sin_server.sin_addr.s_addr = in_aton(addr); | 917 | sin_server.sin_addr.s_addr = in_aton(addr); |
918 | sin_server.sin_port = htons(opts.port); | 918 | sin_server.sin_port = htons(opts.port); |
919 | err = sock_create_kern(PF_INET, SOCK_STREAM, IPPROTO_TCP, &csocket); | 919 | err = __sock_create(read_pnet(¤t->nsproxy->net_ns), PF_INET, |
920 | 920 | SOCK_STREAM, IPPROTO_TCP, &csocket, 1); | |
921 | if (err) { | 921 | if (err) { |
922 | P9_EPRINTK(KERN_ERR, "p9_trans_tcp: problem creating socket\n"); | 922 | P9_EPRINTK(KERN_ERR, "p9_trans_tcp: problem creating socket\n"); |
923 | return err; | 923 | return err; |
@@ -954,7 +954,8 @@ p9_fd_create_unix(struct p9_client *client, const char *addr, char *args) | |||
954 | 954 | ||
955 | sun_server.sun_family = PF_UNIX; | 955 | sun_server.sun_family = PF_UNIX; |
956 | strcpy(sun_server.sun_path, addr); | 956 | strcpy(sun_server.sun_path, addr); |
957 | err = sock_create_kern(PF_UNIX, SOCK_STREAM, 0, &csocket); | 957 | err = __sock_create(read_pnet(¤t->nsproxy->net_ns), PF_UNIX, |
958 | SOCK_STREAM, 0, &csocket, 1); | ||
958 | if (err < 0) { | 959 | if (err < 0) { |
959 | P9_EPRINTK(KERN_ERR, "p9_trans_unix: problem creating socket\n"); | 960 | P9_EPRINTK(KERN_ERR, "p9_trans_unix: problem creating socket\n"); |
960 | return err; | 961 | return err; |