home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.0 / LINUX-1.0 / LINUX-1 / linux / net / inet / protocol.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-01  |  1.8 KB  |  60 lines

  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 */
  60.