root/include/net/protocol.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
   3  *              operating system.  INET is implemented using the  BSD Socket
   4  *              interface as the means of communication with the user level.
   5  *
   6  *              Definitions for the protocol dispatcher.
   7  *
   8  * Version:     @(#)protocol.h  1.0.2   05/07/93
   9  *
  10  * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  11  *
  12  *              This program is free software; you can redistribute it and/or
  13  *              modify it under the terms of the GNU General Public License
  14  *              as published by the Free Software Foundation; either version
  15  *              2 of the License, or (at your option) any later version.
  16  *
  17  *      Changes:
  18  *              Alan Cox        :       Added a name field and a frag handler
  19  *                                      field for later.
  20  */
  21  
  22 #ifndef _PROTOCOL_H
  23 #define _PROTOCOL_H
  24 
  25 
  26 #define MAX_INET_PROTOS 32              /* Must be a power of 2         */
  27 
  28 
  29 /* This is used to register protocols. */
  30 struct inet_protocol {
  31   int                   (*handler)(struct sk_buff *skb, struct device *dev,
  32                                    struct options *opt, unsigned long daddr,
  33                                    unsigned short len, unsigned long saddr,
  34                                    int redo, struct inet_protocol *protocol);
  35   int                   (*frag_handler)(struct sk_buff *skb, struct device *dev,
  36                                    struct options *opt, unsigned long daddr,
  37                                    unsigned short len, unsigned long saddr,
  38                                    int redo, struct inet_protocol *protocol);
  39   void                  (*err_handler)(int err, unsigned char *buff,
  40                                        unsigned long daddr,
  41                                        unsigned long saddr,
  42                                        struct inet_protocol *protocol);
  43   struct inet_protocol *next;
  44   unsigned char         protocol;
  45   unsigned char         copy:1;
  46   void                  *data;
  47   char                  *name;
  48 };
  49 
  50 
  51 extern struct inet_protocol *inet_protocol_base;
  52 extern struct inet_protocol *inet_protos[MAX_INET_PROTOS];
  53 
  54 
  55 extern void             inet_add_protocol(struct inet_protocol *prot);
  56 extern int              inet_del_protocol(struct inet_protocol *prot);
  57 
  58 
  59 #endif  /* _PROTOCOL_H */

/* [previous][next][first][last][top][bottom][index][help] */