ipv6: introduce ipv6_make_skb
This commit is very similar to
commit 1c32c5ad6f
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date: Tue Mar 1 02:36:47 2011 +0000
inet: Add ip_make_skb and ip_finish_skb
It adds IPv6 version of the helpers ip6_make_skb and ip6_finish_skb.
The job of ip6_make_skb is to collect messages into an ipv6 packet
and poplulate ipv6 eader. The job of ip6_finish_skb is to transmit
the generated skb. Together they replicated the job of
ip6_push_pending_frames() while also provide the capability to be
called independently. This will be needed to add lockless UDP sendmsg
support.
Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
0bbe84a67b
commit
6422398c2a
@@ -788,6 +788,25 @@ int ip6_push_pending_frames(struct sock *sk);
|
||||
|
||||
void ip6_flush_pending_frames(struct sock *sk);
|
||||
|
||||
int ip6_send_skb(struct sk_buff *skb);
|
||||
|
||||
struct sk_buff *__ip6_make_skb(struct sock *sk, struct sk_buff_head *queue,
|
||||
struct inet_cork_full *cork,
|
||||
struct inet6_cork *v6_cork);
|
||||
struct sk_buff *ip6_make_skb(struct sock *sk,
|
||||
int getfrag(void *from, char *to, int offset,
|
||||
int len, int odd, struct sk_buff *skb),
|
||||
void *from, int length, int transhdrlen,
|
||||
int hlimit, int tclass, struct ipv6_txoptions *opt,
|
||||
struct flowi6 *fl6, struct rt6_info *rt,
|
||||
unsigned int flags, int dontfrag);
|
||||
|
||||
static inline struct sk_buff *ip6_finish_skb(struct sock *sk)
|
||||
{
|
||||
return __ip6_make_skb(sk, &sk->sk_write_queue, &inet_sk(sk)->cork,
|
||||
&inet6_sk(sk)->cork);
|
||||
}
|
||||
|
||||
int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6);
|
||||
struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
|
||||
const struct in6_addr *final_dst);
|
||||
|
Reference in New Issue
Block a user