OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [net/] [protocol.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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
 *              Alan Cox        :       Cleaned up, and sorted types.
21
 *              Pedro Roque     :       inet6 protocols
22
 */
23
 
24
#ifndef _PROTOCOL_H
25
#define _PROTOCOL_H
26
 
27
#include <linux/config.h>
28
#include <linux/in6.h>
29
#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
30
#include <linux/ipv6.h>
31
#endif
32
 
33
#define MAX_INET_PROTOS 32              /* Must be a power of 2         */
34
 
35
 
36
/* This is used to register protocols. */
37
struct inet_protocol
38
{
39
        int                     (*handler)(struct sk_buff *skb);
40
        void                    (*err_handler)(struct sk_buff *skb, u32 info);
41
        struct inet_protocol    *next;
42
        unsigned char           protocol;
43
        unsigned char           copy:1;
44
        void                    *data;
45
        const char              *name;
46
};
47
 
48
#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
49
struct inet6_protocol
50
{
51
        int     (*handler)(struct sk_buff *skb);
52
 
53
        void    (*err_handler)(struct sk_buff *skb,
54
                               struct inet6_skb_parm *opt,
55
                               int type, int code, int offset,
56
                               __u32 info);
57
        struct inet6_protocol *next;
58
        unsigned char   protocol;
59
        unsigned char   copy:1;
60
        void            *data;
61
        const char      *name;
62
};
63
 
64
#endif
65
 
66
/* This is used to register socket interfaces for IP protocols.  */
67
struct inet_protosw {
68
        struct list_head list;
69
 
70
        /* These two fields form the lookup key.  */
71
        unsigned short   type;     /* This is the 2nd argument to socket(2). */
72
        int              protocol; /* This is the L4 protocol number.  */
73
 
74
        struct proto     *prot;
75
        struct proto_ops *ops;
76
 
77
        int              capability; /* Which (if any) capability do
78
                                      * we need to use this socket
79
                                      * interface?
80
                                      */
81
        char             no_check;   /* checksum on rcv/xmit/none? */
82
        unsigned char    flags;      /* See INET_PROTOSW_* below.  */
83
};
84
#define INET_PROTOSW_REUSE 0x01      /* Are ports automatically reusable? */
85
#define INET_PROTOSW_PERMANENT 0x02  /* Permanent protocols are unremovable. */
86
 
87
extern struct inet_protocol *inet_protocol_base;
88
extern struct inet_protocol *inet_protos[MAX_INET_PROTOS];
89
extern struct list_head inetsw[SOCK_MAX];
90
 
91
#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
92
extern struct inet6_protocol *inet6_protos[MAX_INET_PROTOS];
93
extern struct list_head inetsw6[SOCK_MAX];
94
#endif
95
 
96
extern void     inet_add_protocol(struct inet_protocol *prot);
97
extern int      inet_del_protocol(struct inet_protocol *prot);
98
extern void     inet_register_protosw(struct inet_protosw *p);
99
extern void     inet_unregister_protosw(struct inet_protosw *p);
100
 
101
#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
102
extern void     inet6_add_protocol(struct inet6_protocol *prot);
103
extern int      inet6_del_protocol(struct inet6_protocol *prot);
104
extern void     inet6_register_protosw(struct inet_protosw *p);
105
extern void     inet6_unregister_protosw(struct inet_protosw *p);
106
#endif
107
 
108
#endif  /* _PROTOCOL_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.