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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uC-libc/] [include/] [linux/] [net.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
/*
2
 * NET          An implementation of the SOCKET network access protocol.
3
 *              This is the master header file for the Linux NET layer,
4
 *              or, in plain English: the networking handling part of the
5
 *              kernel.
6
 *
7
 * Version:     @(#)net.h       1.0.3   05/25/93
8
 *
9
 * Authors:     Orest Zborowski, <obz@Kodak.COM>
10
 *              Ross Biro, <bir7@leland.Stanford.Edu>
11
 *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
12
 *
13
 *              This program is free software; you can redistribute it and/or
14
 *              modify it under the terms of the GNU General Public License
15
 *              as published by the Free Software Foundation; either version
16
 *              2 of the License, or (at your option) any later version.
17
 */
18
#ifndef _LINUX_NET_H
19
#define _LINUX_NET_H
20
 
21
 
22
#include <linux/wait.h>
23
#include <linux/socket.h>
24
 
25
#define NPROTO          16              /* should be enough for now..   */
26
 
27
 
28
#define SYS_SOCKET      1               /* sys_socket(2)                */
29
#define SYS_BIND        2               /* sys_bind(2)                  */
30
#define SYS_CONNECT     3               /* sys_connect(2)               */
31
#define SYS_LISTEN      4               /* sys_listen(2)                */
32
#define SYS_ACCEPT      5               /* sys_accept(2)                */
33
#define SYS_GETSOCKNAME 6               /* sys_getsockname(2)           */
34
#define SYS_GETPEERNAME 7               /* sys_getpeername(2)           */
35
#define SYS_SOCKETPAIR  8               /* sys_socketpair(2)            */
36
#define SYS_SEND        9               /* sys_send(2)                  */
37
#define SYS_RECV        10              /* sys_recv(2)                  */
38
#define SYS_SENDTO      11              /* sys_sendto(2)                */
39
#define SYS_RECVFROM    12              /* sys_recvfrom(2)              */
40
#define SYS_SHUTDOWN    13              /* sys_shutdown(2)              */
41
#define SYS_SETSOCKOPT  14              /* sys_setsockopt(2)            */
42
#define SYS_GETSOCKOPT  15              /* sys_getsockopt(2)            */
43
#define SYS_SENDMSG     16              /* sys_sendmsg(2)               */
44
#define SYS_RECVMSG     17              /* sys_recvmsg(2)               */
45
 
46
 
47
typedef enum {
48
  SS_FREE = 0,                           /* not allocated                */
49
  SS_UNCONNECTED,                       /* unconnected to any socket    */
50
  SS_CONNECTING,                        /* in process of connecting     */
51
  SS_CONNECTED,                         /* connected to socket          */
52
  SS_DISCONNECTING                      /* in process of disconnecting  */
53
} socket_state;
54
 
55
#define SO_ACCEPTCON    (1<<16)         /* performed a listen           */
56
#define SO_WAITDATA     (1<<17)         /* wait data to read            */
57
#define SO_NOSPACE      (1<<18)         /* no space to write            */
58
 
59
#ifdef __KERNEL__
60
/*
61
 * Internal representation of a socket. not all the fields are used by
62
 * all configurations:
63
 *
64
 *              server                  client
65
 * conn         client connected to     server connected to
66
 * iconn        list of clients         -unused-
67
 *               awaiting connections
68
 * wait         sleep for clients,      sleep for connection,
69
 *              sleep for i/o           sleep for i/o
70
 */
71
struct socket {
72
  short                 type;           /* SOCK_STREAM, ...             */
73
  socket_state          state;
74
  long                  flags;
75
  struct proto_ops      *ops;           /* protocols do most everything */
76
  void                  *data;          /* protocol data                */
77
  struct socket         *conn;          /* server socket connected to   */
78
  struct socket         *iconn;         /* incomplete client conn.s     */
79
  struct socket         *next;
80
  struct wait_queue     **wait;         /* ptr to place to wait on      */
81
  struct inode          *inode;
82
  struct fasync_struct  *fasync_list;   /* Asynchronous wake up list    */
83
  struct file           *file;          /* File back pointer for gc     */
84
};
85
 
86
#define SOCK_INODE(S)   ((S)->inode)
87
 
88
struct proto_ops {
89
  int   family;
90
 
91
  int   (*create)       (struct socket *sock, int protocol);
92
  int   (*dup)          (struct socket *newsock, struct socket *oldsock);
93
  int   (*release)      (struct socket *sock, struct socket *peer);
94
  int   (*bind)         (struct socket *sock, struct sockaddr *umyaddr,
95
                         int sockaddr_len);
96
  int   (*connect)      (struct socket *sock, struct sockaddr *uservaddr,
97
                         int sockaddr_len, int flags);
98
  int   (*socketpair)   (struct socket *sock1, struct socket *sock2);
99
  int   (*accept)       (struct socket *sock, struct socket *newsock,
100
                         int flags);
101
  int   (*getname)      (struct socket *sock, struct sockaddr *uaddr,
102
                         int *usockaddr_len, int peer);
103
  int   (*select)       (struct socket *sock, int sel_type,
104
                         select_table *wait);
105
  int   (*ioctl)        (struct socket *sock, unsigned int cmd,
106
                         unsigned long arg);
107
  int   (*listen)       (struct socket *sock, int len);
108
  int   (*shutdown)     (struct socket *sock, int flags);
109
  int   (*setsockopt)   (struct socket *sock, int level, int optname,
110
                         char *optval, int optlen);
111
  int   (*getsockopt)   (struct socket *sock, int level, int optname,
112
                         char *optval, int *optlen);
113
  int   (*fcntl)        (struct socket *sock, unsigned int cmd,
114
                         unsigned long arg);
115
  int   (*sendmsg)      (struct socket *sock, struct msghdr *m, int total_len, int nonblock, int flags);
116
  int   (*recvmsg)      (struct socket *sock, struct msghdr *m, int total_len, int nonblock, int flags, int *addr_len);
117
};
118
 
119
struct net_proto {
120
        const char *name;               /* Protocol name */
121
        void (*init_func)(struct net_proto *);  /* Bootstrap */
122
};
123
 
124
extern int      sock_wake_async(struct socket *sock, int how);
125
extern int      sock_register(int family, struct proto_ops *ops);
126
extern int      sock_unregister(int family);
127
extern struct socket *sock_alloc(void);
128
extern void     sock_release(struct socket *sock);
129
#endif /* __KERNEL__ */
130
#endif  /* _LINUX_NET_H */

powered by: WebSVN 2.1.0

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