diff options
Diffstat (limited to 'include/net/ipv6.h')
-rw-r--r-- | include/net/ipv6.h | 24 |
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 | ||
674 | void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt); | ||
674 | void ipv6_proxy_select_ident(struct sk_buff *skb); | 675 | void ipv6_proxy_select_ident(struct sk_buff *skb); |
675 | 676 | ||
676 | int ip6_dst_hoplimit(struct dst_entry *dst); | 677 | int 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 | ||
789 | void ip6_flush_pending_frames(struct sock *sk); | 790 | void ip6_flush_pending_frames(struct sock *sk); |
790 | 791 | ||
792 | int ip6_send_skb(struct sk_buff *skb); | ||
793 | |||
794 | struct 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); | ||
797 | struct 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 | |||
805 | static 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 | |||
791 | int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6); | 811 | int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6); |
792 | struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, | 812 | struct 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); |