aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ipv6.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/ipv6.h')
-rw-r--r--include/net/ipv6.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 4292929392b0..4c9fe224d73b 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -671,6 +671,7 @@ static inline int ipv6_addr_diff(const struct in6_addr *a1, const struct in6_add
671 return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr)); 671 return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr));
672} 672}
673 673
674void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt);
674void ipv6_proxy_select_ident(struct sk_buff *skb); 675void ipv6_proxy_select_ident(struct sk_buff *skb);
675 676
676int ip6_dst_hoplimit(struct dst_entry *dst); 677int ip6_dst_hoplimit(struct dst_entry *dst);
@@ -708,7 +709,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb,
708 __be32 flowlabel, bool autolabel) 709 __be32 flowlabel, bool autolabel)
709{ 710{
710 if (!flowlabel && (autolabel || net->ipv6.sysctl.auto_flowlabels)) { 711 if (!flowlabel && (autolabel || net->ipv6.sysctl.auto_flowlabels)) {
711 __be32 hash; 712 u32 hash;
712 713
713 hash = skb_get_hash(skb); 714 hash = skb_get_hash(skb);
714 715
@@ -718,7 +719,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb,
718 */ 719 */
719 hash ^= hash >> 12; 720 hash ^= hash >> 12;
720 721
721 flowlabel = hash & IPV6_FLOWLABEL_MASK; 722 flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK;
722 } 723 }
723 724
724 return flowlabel; 725 return flowlabel;
@@ -788,6 +789,25 @@ int ip6_push_pending_frames(struct sock *sk);
788 789
789void ip6_flush_pending_frames(struct sock *sk); 790void ip6_flush_pending_frames(struct sock *sk);
790 791
792int ip6_send_skb(struct sk_buff *skb);
793
794struct sk_buff *__ip6_make_skb(struct sock *sk, struct sk_buff_head *queue,
795 struct inet_cork_full *cork,
796 struct inet6_cork *v6_cork);
797struct sk_buff *ip6_make_skb(struct sock *sk,
798 int getfrag(void *from, char *to, int offset,
799 int len, int odd, struct sk_buff *skb),
800 void *from, int length, int transhdrlen,
801 int hlimit, int tclass, struct ipv6_txoptions *opt,
802 struct flowi6 *fl6, struct rt6_info *rt,
803 unsigned int flags, int dontfrag);
804
805static inline struct sk_buff *ip6_finish_skb(struct sock *sk)
806{
807 return __ip6_make_skb(sk, &sk->sk_write_queue, &inet_sk(sk)->cork,
808 &inet6_sk(sk)->cork);
809}
810
791int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6); 811int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6);
792struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, 812struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
793 const struct in6_addr *final_dst); 813 const struct in6_addr *final_dst);