@ -67,7 +67,6 @@
# include <net/flow.h>
# include <net/ip6_checksum.h>
# include <net/inet_common.h>
# include <net/l3mdev.h>
# include <linux/proc_fs.h>
# include <linux/netfilter.h>
@ -457,11 +456,9 @@ static void ndisc_send_skb(struct sk_buff *skb,
if ( ! dst ) {
struct flowi6 fl6 ;
int oif = l3mdev_fib_oif ( skb - > dev ) ;
int oif = skb - > dev - > ifindex ;
icmpv6_flow_init ( sk , & fl6 , type , saddr , daddr , oif ) ;
if ( oif ! = skb - > dev - > ifindex )
fl6 . flowi6_flags | = FLOWI_FLAG_L3MDEV_SRC ;
dst = icmp6_dst_alloc ( skb - > dev , & fl6 ) ;
if ( IS_ERR ( dst ) ) {
kfree_skb ( skb ) ;
@ -1538,7 +1535,6 @@ void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target)
int rd_len ;
u8 ha_buf [ MAX_ADDR_LEN ] , * ha = NULL ,
ops_data_buf [ NDISC_OPS_REDIRECT_DATA_SPACE ] , * ops_data = NULL ;
int oif = l3mdev_fib_oif ( dev ) ;
bool ret ;
if ( ipv6_get_lladdr ( dev , & saddr_buf , IFA_F_TENTATIVE ) ) {
@ -1555,10 +1551,7 @@ void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target)
}
icmpv6_flow_init ( sk , & fl6 , NDISC_REDIRECT ,
& saddr_buf , & ipv6_hdr ( skb ) - > saddr , oif ) ;
if ( oif ! = skb - > dev - > ifindex )
fl6 . flowi6_flags | = FLOWI_FLAG_L3MDEV_SRC ;
& saddr_buf , & ipv6_hdr ( skb ) - > saddr , dev - > ifindex ) ;
dst = ip6_route_output ( net , NULL , & fl6 ) ;
if ( dst - > error ) {