--- olpc-2.6-master.00/net/ipv6/addrconf.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/net/ipv6/addrconf.c 2007-03-01 11:52:20.000000000 -0500 @@ -2676,7 +2676,10 @@ static void if6_seq_stop(struct seq_file static int if6_seq_show(struct seq_file *seq, void *v) { struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v; - seq_printf(seq, + + /* no ipv6 inside a vserver for now */ + if (nx_check(0, VS_ADMIN|VS_WATCH)) + seq_printf(seq, NIP6_SEQFMT " %02x %02x %02x %02x %8s\n", NIP6(ifp->addr), ifp->idev->dev->ifindex, --- olpc-2.6-master.00/net/ipv6/addrconf.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/net/ipv6/addrconf.c 2007-03-01 11:52:20.000000000 -0500 @@ -3159,6 +3162,10 @@ static int inet6_dump_addr(struct sk_buf struct ifmcaddr6 *ifmca; struct ifacaddr6 *ifaca; + /* no ipv6 inside a vserver for now */ + if (skb->sk && skb->sk->sk_vx_info) + return skb->len; + s_idx = cb->args[0]; s_ip_idx = ip_idx = cb->args[1]; read_lock(&dev_base_lock); --- olpc-2.6-master.00/net/ipv6/addrconf.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/net/ipv6/addrconf.c 2007-03-01 11:52:20.000000000 -0500 @@ -3437,6 +3444,10 @@ static int inet6_dump_ifinfo(struct sk_b struct net_device *dev; struct inet6_dev *idev; + /* no ipv6 inside a vserver for now */ + if (skb->sk && skb->sk->sk_vx_info) + return skb->len; + read_lock(&dev_base_lock); for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) { if (idx < s_idx) --- olpc-2.6-master.00/net/socket.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/net/socket.c 2007-03-01 11:52:20.000000000 -0500 @@ -1055,6 +1083,10 @@ static int __sock_create(int family, int if (type < 0 || type >= SOCK_MAX) return -EINVAL; + /* disable IPv6 inside vservers for now */ + if (family == PF_INET6 && !nx_check(0, VS_ADMIN)) + return -EAFNOSUPPORT; + /* Compatibility. This uglymoron is moved from INET layer to here to avoid