int ip6_rcv_finish( struct sk_buff *skb) { if (skb_dst(skb) == NULL) ip6_route_input(skb); return dst_input(skb); }
static inline int ip6_rcv_finish( struct sk_buff *skb) { if (skb->dst == NULL) ip6_route_input(skb); return dst_input(skb); }
int ip6_rcv_finish(struct sk_buff *skb) { if (sysctl_ip_early_demux && !skb_dst(skb)) { const struct inet6_protocol *ipprot; ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); if (ipprot && ipprot->early_demux) ipprot->early_demux(skb); } if (!skb_dst(skb)) ip6_route_input(skb); return dst_input(skb); }
static void ip6_rcv_finish_core(struct net *net, struct sock *sk, struct sk_buff *skb) { void (*edemux)(struct sk_buff *skb); if (net->ipv4.sysctl_ip_early_demux && !skb_dst(skb) && skb->sk == NULL) { const struct inet6_protocol *ipprot; ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); if (ipprot && (edemux = READ_ONCE(ipprot->early_demux))) edemux(skb); } if (!skb_valid_dst(skb)) ip6_route_input(skb); }
inline int ip6_rcv_finish( struct sk_buff *skb) { /* <DTS2012092706169 w00211169 2012-10-20 begin */ /* <DTS2012082701764 w00211169 2012-9-17 begin */ #if 0 if (skb->dst == NULL) ip6_fakesrc_process(skb); #endif /* DTS2012082701764 w00211169 2012-9-17 end> */ /* DTS2012092706169 w00211169 2012-10-20 end> */ if (skb->dst == NULL) ip6_route_input(skb); return dst_input(skb); }
int ip6_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb) { /* if ingress device is enslaved to an L3 master device pass the * skb to its handler for processing */ skb = l3mdev_ip6_rcv(skb); if (!skb) return NET_RX_SUCCESS; if (net->ipv4.sysctl_ip_early_demux && !skb_dst(skb) && skb->sk == NULL) { const struct inet6_protocol *ipprot; ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); if (ipprot && ipprot->early_demux) ipprot->early_demux(skb); } if (!skb_valid_dst(skb)) ip6_route_input(skb); return dst_input(skb); }