summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKazunori Miyazawa <kazunori@miyazawa.org>2003-05-12 00:21:19 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-05-12 00:21:19 -0700
commit6bac90985c8b65ffc25839c001aa7ef4831d2915 (patch)
tree73327558bb0ecd6b78f4798deea619d6bc75d0d0 /include
parentd983ec93cba9e30482766d63d9bd4918a1a2a955 (diff)
[IPV4]: Introduce ip6_append_data.
Diffstat (limited to 'include')
-rw-r--r--include/linux/ipv6.h7
-rw-r--r--include/linux/skbuff.h9
-rw-r--r--include/net/ipv6.h20
3 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index caab8bbc88fe..f70e91028c96 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -121,6 +121,7 @@ struct ipv6hdr {
#include <linux/icmpv6.h>
#include <net/if_inet6.h> /* struct ipv6_mc_socklist */
#include <linux/tcp.h>
+#include <linux/udp.h>
/*
This structure contains results of exthdrs parsing
@@ -178,6 +179,11 @@ struct ipv6_pinfo {
struct ipv6_txoptions *opt;
struct sk_buff *pktoptions;
+ struct {
+ struct ipv6_txoptions *opt;
+ struct rt6_info *rt;
+ struct flowi *fl;
+ } cork;
};
struct raw6_opt {
@@ -200,6 +206,7 @@ struct udp6_sock {
struct sock sk;
struct ipv6_pinfo *pinet6;
struct inet_opt inet;
+ struct udp_opt udp;
struct ipv6_pinfo inet6;
};
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 3be29f0d15f6..6b8ab6887236 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -792,6 +792,15 @@ static inline int skb_pagelen(const struct sk_buff *skb)
return len + skb_headlen(skb);
}
+static inline void skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size)
+{
+ skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+ frag->page = page;
+ frag->page_offset = off;
+ frag->size = size;
+ skb_shinfo(skb)->nr_frags = i+1;
+}
+
#define SKB_PAGE_ASSERT(skb) do { if (skb_shinfo(skb)->nr_frags) \
BUG(); } while (0)
#define SKB_FRAG_ASSERT(skb) do { if (skb_shinfo(skb)->frag_list) \
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index b6760b3b9f56..754c7f36afda 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -316,6 +316,26 @@ extern int ip6_build_xmit(struct sock *sk,
struct ipv6_txoptions *opt,
int hlimit, int flags);
+extern int ip6_append_data(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,
+ struct ipv6_txoptions *opt,
+ struct flowi *fl,
+ struct rt6_info *rt,
+ unsigned int flags);
+
+extern int ip6_push_pending_frames(struct sock *sk);
+
+extern void ip6_flush_pending_frames(struct sock *sk);
+
+extern int ip6_dst_lookup(struct sock *sk,
+ struct dst_entry **dst,
+ struct flowi *fl,
+ struct in6_addr **saddr);
+
/*
* skb processing functions
*/