Subject: [PATCH] nethost: only display ipv4 udp sockets in proc for the current host. From: Eric W. Biederman Date: 1133875497 -0700 --- include/net/udp.h | 1 + net/ipv4/udp.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) b62deedf8538d3b5c3b3416e906369a5b1890e19 diff --git a/include/net/udp.h b/include/net/udp.h index b861bf4..cd961f8 100644 --- a/include/net/udp.h +++ b/include/net/udp.h @@ -90,6 +90,7 @@ struct udp_seq_afinfo { struct udp_iter_state { sa_family_t family; + struct nethost *host; int bucket; struct seq_operations seq_ops; }; diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index caace8a..129268a 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1393,7 +1393,8 @@ static struct sock *udp_get_first(struct for (state->bucket = 0; state->bucket < UDP_HTABLE_SIZE; ++state->bucket) { struct hlist_node *node; sk_for_each(sk, node, &udp_hash[state->bucket]) { - if (sk->sk_family == state->family) + if ((sk->sk_family == state->family) && + (sk->sk_host == state->host)) goto found; } } @@ -1410,7 +1411,7 @@ static struct sock *udp_get_next(struct sk = sk_next(sk); try_again: ; - } while (sk && sk->sk_family != state->family); + } while ((sk && sk->sk_family != state->family) && (sk->sk_host != state->host)); if (!sk && ++state->bucket < UDP_HTABLE_SIZE) { sk = sk_head(&udp_hash[state->bucket]); @@ -1464,6 +1465,7 @@ static int udp_seq_open(struct inode *in goto out; memset(s, 0, sizeof(*s)); s->family = afinfo->family; + s->host = current->host; s->seq_ops.start = udp_seq_start; s->seq_ops.next = udp_seq_next; s->seq_ops.show = afinfo->seq_show; -- 1.0.GIT