]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/protocol.h
[NETNS][IPV6]: Make multiple instance of sysctl tables.
[linux-2.6-omap-h63xx.git] / include / net / protocol.h
index 40b6b9c9973f5dd2756fd3dc4c6439d7676784e6..ad8c584233a62c75f857929d1b4ee5ba3c6d0521 100644 (file)
@@ -36,6 +36,7 @@
 struct net_protocol {
        int                     (*handler)(struct sk_buff *skb);
        void                    (*err_handler)(struct sk_buff *skb, u32 info);
+       int                     (*gso_send_check)(struct sk_buff *skb);
        struct sk_buff         *(*gso_segment)(struct sk_buff *skb,
                                               int features);
        int                     no_policy;
@@ -44,17 +45,24 @@ struct net_protocol {
 #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
 struct inet6_protocol 
 {
-       int     (*handler)(struct sk_buff **skb);
+       int     (*handler)(struct sk_buff *skb);
 
        void    (*err_handler)(struct sk_buff *skb,
                               struct inet6_skb_parm *opt,
                               int type, int code, int offset,
-                              __u32 info);
+                              __be32 info);
+
+       int     (*gso_send_check)(struct sk_buff *skb);
+       struct sk_buff *(*gso_segment)(struct sk_buff *skb,
+                                      int features);
+
        unsigned int    flags;  /* INET6_PROTO_xxx */
 };
 
 #define INET6_PROTO_NOPOLICY   0x1
 #define INET6_PROTO_FINAL      0x2
+/* This should be set for any extension header which is compatible with GSO. */
+#define INET6_PROTO_GSO_EXTHDR 0x4
 #endif
 
 /* This is used to register socket interfaces for IP protocols.  */
@@ -63,7 +71,7 @@ struct inet_protosw {
 
         /* These two fields form the lookup key.  */
        unsigned short   type;     /* This is the 2nd argument to socket(2). */
-       int              protocol; /* This is the L4 protocol number.  */
+       unsigned short   protocol; /* This is the L4 protocol number.  */
 
        struct proto     *prot;
        const struct proto_ops *ops;
@@ -94,7 +102,7 @@ extern void  inet_unregister_protosw(struct inet_protosw *p);
 #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
 extern int     inet6_add_protocol(struct inet6_protocol *prot, unsigned char num);
 extern int     inet6_del_protocol(struct inet6_protocol *prot, unsigned char num);
-extern void    inet6_register_protosw(struct inet_protosw *p);
+extern int     inet6_register_protosw(struct inet_protosw *p);
 extern void    inet6_unregister_protosw(struct inet_protosw *p);
 #endif