mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[UDP]: Fix AF-specific references in AF-agnostic code.
__udp_lib_port_inuse() cannot make direct references to inet_sk(sk)->rcv_saddr as that is ipv4 specific state and this code is used by ipv6 too. Use an operations vector to solve this, and this also paves the way for ipv6 support for non-wild saddr hashing in UDP. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a2af421f18
commit
fc038410b4
8 changed files with 93 additions and 41 deletions
|
@ -119,9 +119,16 @@ static inline void udp_lib_close(struct sock *sk, long timeout)
|
|||
}
|
||||
|
||||
|
||||
struct udp_get_port_ops {
|
||||
int (*saddr_cmp)(const struct sock *sk1, const struct sock *sk2);
|
||||
int (*saddr_any)(const struct sock *sk);
|
||||
unsigned int (*hash_port_and_rcv_saddr)(__u16 port,
|
||||
const struct sock *sk);
|
||||
};
|
||||
|
||||
/* net/ipv4/udp.c */
|
||||
extern int udp_get_port(struct sock *sk, unsigned short snum,
|
||||
int (*saddr_cmp)(const struct sock *, const struct sock *));
|
||||
const struct udp_get_port_ops *ops);
|
||||
extern void udp_err(struct sk_buff *, u32);
|
||||
|
||||
extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue