Commit 919dfa0b authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by David S. Miller

udp: Clean up some functions.

This patch adds no functional change and cleans up some functions
that the following patches touch around so that we make them tidy
and easy to review/revert.  The change is mainly to keep reverse
christmas tree order.
Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e8822565
...@@ -232,16 +232,16 @@ static int udp_reuseport_add_sock(struct sock *sk, struct udp_hslot *hslot) ...@@ -232,16 +232,16 @@ static int udp_reuseport_add_sock(struct sock *sk, struct udp_hslot *hslot)
int udp_lib_get_port(struct sock *sk, unsigned short snum, int udp_lib_get_port(struct sock *sk, unsigned short snum,
unsigned int hash2_nulladdr) unsigned int hash2_nulladdr)
{ {
struct udp_hslot *hslot, *hslot2;
struct udp_table *udptable = sk->sk_prot->h.udp_table; struct udp_table *udptable = sk->sk_prot->h.udp_table;
int error = 1; struct udp_hslot *hslot, *hslot2;
struct net *net = sock_net(sk); struct net *net = sock_net(sk);
int error = 1;
if (!snum) { if (!snum) {
DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
unsigned short first, last;
int low, high, remaining; int low, high, remaining;
unsigned int rand; unsigned int rand;
unsigned short first, last;
DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
inet_get_local_port_range(net, &low, &high); inet_get_local_port_range(net, &low, &high);
remaining = (high - low) + 1; remaining = (high - low) + 1;
...@@ -2519,10 +2519,13 @@ static struct sock *__udp4_lib_mcast_demux_lookup(struct net *net, ...@@ -2519,10 +2519,13 @@ static struct sock *__udp4_lib_mcast_demux_lookup(struct net *net,
__be16 rmt_port, __be32 rmt_addr, __be16 rmt_port, __be32 rmt_addr,
int dif, int sdif) int dif, int sdif)
{ {
struct sock *sk, *result;
unsigned short hnum = ntohs(loc_port); unsigned short hnum = ntohs(loc_port);
unsigned int slot = udp_hashfn(net, hnum, udp_table.mask); struct sock *sk, *result;
struct udp_hslot *hslot = &udp_table.hash[slot]; struct udp_hslot *hslot;
unsigned int slot;
slot = udp_hashfn(net, hnum, udp_table.mask);
hslot = &udp_table.hash[slot];
/* Do not bother scanning a too big list */ /* Do not bother scanning a too big list */
if (hslot->count > 10) if (hslot->count > 10)
...@@ -2550,14 +2553,18 @@ static struct sock *__udp4_lib_demux_lookup(struct net *net, ...@@ -2550,14 +2553,18 @@ static struct sock *__udp4_lib_demux_lookup(struct net *net,
__be16 rmt_port, __be32 rmt_addr, __be16 rmt_port, __be32 rmt_addr,
int dif, int sdif) int dif, int sdif)
{ {
unsigned short hnum = ntohs(loc_port);
unsigned int hash2 = ipv4_portaddr_hash(net, loc_addr, hnum);
unsigned int slot2 = hash2 & udp_table.mask;
struct udp_hslot *hslot2 = &udp_table.hash2[slot2];
INET_ADDR_COOKIE(acookie, rmt_addr, loc_addr); INET_ADDR_COOKIE(acookie, rmt_addr, loc_addr);
const __portpair ports = INET_COMBINED_PORTS(rmt_port, hnum); unsigned short hnum = ntohs(loc_port);
unsigned int hash2, slot2;
struct udp_hslot *hslot2;
__portpair ports;
struct sock *sk; struct sock *sk;
hash2 = ipv4_portaddr_hash(net, loc_addr, hnum);
slot2 = hash2 & udp_table.mask;
hslot2 = &udp_table.hash2[slot2];
ports = INET_COMBINED_PORTS(rmt_port, hnum);
udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) { udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
if (inet_match(net, sk, acookie, ports, dif, sdif)) if (inet_match(net, sk, acookie, ports, dif, sdif))
return sk; return sk;
...@@ -2970,10 +2977,10 @@ EXPORT_SYMBOL(udp_prot); ...@@ -2970,10 +2977,10 @@ EXPORT_SYMBOL(udp_prot);
static struct sock *udp_get_first(struct seq_file *seq, int start) static struct sock *udp_get_first(struct seq_file *seq, int start)
{ {
struct sock *sk;
struct udp_seq_afinfo *afinfo;
struct udp_iter_state *state = seq->private; struct udp_iter_state *state = seq->private;
struct net *net = seq_file_net(seq); struct net *net = seq_file_net(seq);
struct udp_seq_afinfo *afinfo;
struct sock *sk;
if (state->bpf_seq_afinfo) if (state->bpf_seq_afinfo)
afinfo = state->bpf_seq_afinfo; afinfo = state->bpf_seq_afinfo;
...@@ -3004,9 +3011,9 @@ static struct sock *udp_get_first(struct seq_file *seq, int start) ...@@ -3004,9 +3011,9 @@ static struct sock *udp_get_first(struct seq_file *seq, int start)
static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk) static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
{ {
struct udp_seq_afinfo *afinfo;
struct udp_iter_state *state = seq->private; struct udp_iter_state *state = seq->private;
struct net *net = seq_file_net(seq); struct net *net = seq_file_net(seq);
struct udp_seq_afinfo *afinfo;
if (state->bpf_seq_afinfo) if (state->bpf_seq_afinfo)
afinfo = state->bpf_seq_afinfo; afinfo = state->bpf_seq_afinfo;
...@@ -3062,8 +3069,8 @@ EXPORT_SYMBOL(udp_seq_next); ...@@ -3062,8 +3069,8 @@ EXPORT_SYMBOL(udp_seq_next);
void udp_seq_stop(struct seq_file *seq, void *v) void udp_seq_stop(struct seq_file *seq, void *v)
{ {
struct udp_seq_afinfo *afinfo;
struct udp_iter_state *state = seq->private; struct udp_iter_state *state = seq->private;
struct udp_seq_afinfo *afinfo;
if (state->bpf_seq_afinfo) if (state->bpf_seq_afinfo)
afinfo = state->bpf_seq_afinfo; afinfo = state->bpf_seq_afinfo;
......
...@@ -1064,12 +1064,16 @@ static struct sock *__udp6_lib_demux_lookup(struct net *net, ...@@ -1064,12 +1064,16 @@ static struct sock *__udp6_lib_demux_lookup(struct net *net,
int dif, int sdif) int dif, int sdif)
{ {
unsigned short hnum = ntohs(loc_port); unsigned short hnum = ntohs(loc_port);
unsigned int hash2 = ipv6_portaddr_hash(net, loc_addr, hnum); unsigned int hash2, slot2;
unsigned int slot2 = hash2 & udp_table.mask; struct udp_hslot *hslot2;
struct udp_hslot *hslot2 = &udp_table.hash2[slot2]; __portpair ports;
const __portpair ports = INET_COMBINED_PORTS(rmt_port, hnum);
struct sock *sk; struct sock *sk;
hash2 = ipv6_portaddr_hash(net, loc_addr, hnum);
slot2 = hash2 & udp_table.mask;
hslot2 = &udp_table.hash2[slot2];
ports = INET_COMBINED_PORTS(rmt_port, hnum);
udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) { udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
if (sk->sk_state == TCP_ESTABLISHED && if (sk->sk_state == TCP_ESTABLISHED &&
inet6_match(net, sk, rmt_addr, loc_addr, ports, dif, sdif)) inet6_match(net, sk, rmt_addr, loc_addr, ports, dif, sdif))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment