[IPV6]: Make ndisc_flow_init() common for later use.
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Thu, 6 Dec 2007 23:43:30 +0000 (15:43 -0800)
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Tue, 4 Mar 2008 06:18:24 +0000 (15:18 +0900)
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>
include/linux/icmpv6.h
net/ipv6/icmp.c
net/ipv6/ndisc.c

index 8f86d6b..e4d4300 100644 (file)
@@ -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
index 12c0b85..cff7412 100644 (file)
@@ -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:
  */
index 1fc33c8..8db5f4a 100644 (file)
@@ -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)