[IPV6]: Make ndisc_flow_init() common for later use.
For later use, this patch is renaming ndisc_flow_init() to icmpv6_flow_init() and putting it in common place. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
Родитель
5e5f3f0f80
Коммит
95e41e93e1
|
@ -182,6 +182,14 @@ extern int icmpv6_err_convert(int type, int code,
|
|||
extern void icmpv6_cleanup(void);
|
||||
extern void icmpv6_param_prob(struct sk_buff *skb,
|
||||
int code, int pos);
|
||||
|
||||
struct flowi;
|
||||
extern void icmpv6_flow_init(struct sock *sk,
|
||||
struct flowi *fl,
|
||||
u8 type,
|
||||
const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
int oif);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -777,6 +777,22 @@ drop_no_count:
|
|||
return 0;
|
||||
}
|
||||
|
||||
void icmpv6_flow_init(struct sock *sk, struct flowi *fl,
|
||||
u8 type,
|
||||
const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
int oif)
|
||||
{
|
||||
memset(fl, 0, sizeof(*fl));
|
||||
ipv6_addr_copy(&fl->fl6_src, saddr);
|
||||
ipv6_addr_copy(&fl->fl6_dst, daddr);
|
||||
fl->proto = IPPROTO_ICMPV6;
|
||||
fl->fl_icmp_type = type;
|
||||
fl->fl_icmp_code = 0;
|
||||
fl->oif = oif;
|
||||
security_sk_classify_flow(sk, fl);
|
||||
}
|
||||
|
||||
/*
|
||||
* Special lock-class for __icmpv6_sk:
|
||||
*/
|
||||
|
|
|
@ -441,21 +441,6 @@ static void pndisc_destructor(struct pneigh_entry *n)
|
|||
/*
|
||||
* Send a Neighbour Advertisement
|
||||
*/
|
||||
|
||||
static inline void ndisc_flow_init(struct flowi *fl, u8 type,
|
||||
struct in6_addr *saddr, struct in6_addr *daddr,
|
||||
int oif)
|
||||
{
|
||||
memset(fl, 0, sizeof(*fl));
|
||||
ipv6_addr_copy(&fl->fl6_src, saddr);
|
||||
ipv6_addr_copy(&fl->fl6_dst, daddr);
|
||||
fl->proto = IPPROTO_ICMPV6;
|
||||
fl->fl_icmp_type = type;
|
||||
fl->fl_icmp_code = 0;
|
||||
fl->oif = oif;
|
||||
security_sk_classify_flow(ndisc_socket->sk, fl);
|
||||
}
|
||||
|
||||
static void __ndisc_send(struct net_device *dev,
|
||||
struct neighbour *neigh,
|
||||
struct in6_addr *daddr, struct in6_addr *saddr,
|
||||
|
@ -474,8 +459,8 @@ static void __ndisc_send(struct net_device *dev,
|
|||
|
||||
type = icmp6h->icmp6_type;
|
||||
|
||||
ndisc_flow_init(&fl, type, saddr, daddr,
|
||||
dev->ifindex);
|
||||
icmpv6_flow_init(ndisc_socket->sk, &fl, type,
|
||||
saddr, daddr, dev->ifindex);
|
||||
|
||||
dst = ndisc_dst_alloc(dev, neigh, daddr, ip6_output);
|
||||
if (!dst)
|
||||
|
@ -1439,8 +1424,8 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
|
|||
return;
|
||||
}
|
||||
|
||||
ndisc_flow_init(&fl, NDISC_REDIRECT, &saddr_buf, &ipv6_hdr(skb)->saddr,
|
||||
dev->ifindex);
|
||||
icmpv6_flow_init(ndisc_socket->sk, &fl, NDISC_REDIRECT,
|
||||
&saddr_buf, &ipv6_hdr(skb)->saddr, dev->ifindex);
|
||||
|
||||
dst = ip6_route_output(NULL, &fl);
|
||||
if (dst == NULL)
|
||||
|
|
Загрузка…
Ссылка в новой задаче