diff options
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index d80312ddbb8a..3563788d064f 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -604,6 +604,19 @@ static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb, | |||
604 | udptable, skb); | 604 | udptable, skb); |
605 | } | 605 | } |
606 | 606 | ||
607 | struct sock *udp4_lib_lookup_skb(struct sk_buff *skb, | ||
608 | __be16 sport, __be16 dport) | ||
609 | { | ||
610 | const struct iphdr *iph = ip_hdr(skb); | ||
611 | const struct net_device *dev = | ||
612 | skb_dst(skb) ? skb_dst(skb)->dev : skb->dev; | ||
613 | |||
614 | return __udp4_lib_lookup(dev_net(dev), iph->saddr, sport, | ||
615 | iph->daddr, dport, inet_iif(skb), | ||
616 | &udp_table, skb); | ||
617 | } | ||
618 | EXPORT_SYMBOL_GPL(udp4_lib_lookup_skb); | ||
619 | |||
607 | /* Must be called under rcu_read_lock(). | 620 | /* Must be called under rcu_read_lock(). |
608 | * Does increment socket refcount. | 621 | * Does increment socket refcount. |
609 | */ | 622 | */ |