Annotation of linux/net/kern_sock.h, revision 1.1.1.3

1.1       root        1: #ifndef _KERN_SOCK_H
                      2: #define _KERN_SOCK_H
1.1.1.3 ! root        3: #undef SOCK_DEBUG
1.1       root        4: #define NSOCKETS 128                   /* should be dynamic, later... */
                      5: 
                      6: typedef enum {
                      7:        SS_FREE = 0,                    /* not allocated */
                      8:        SS_UNCONNECTED,                 /* unconnected to any socket */
                      9:        SS_CONNECTING,                  /* in process of connecting */
                     10:        SS_CONNECTED,                   /* connected to socket */
                     11:        SS_DISCONNECTING,               /* in process of disconnecting */
                     12: } socket_state;
                     13: 
                     14: #define SO_ACCEPTCON   (1<<16)         /* performed a listen */
                     15: 
                     16: /*
                     17:  * internel representation of a socket. not all the fields are used by
                     18:  * all configurations:
                     19:  *
                     20:  *             server                  client
                     21:  * conn                client connected to     server connected to
                     22:  * iconn       list of clients         -unused-
                     23:  *              awaiting connections
                     24:  * wait                sleep for clients,      sleep for connection,
                     25:  *             sleep for i/o           sleep for i/o
                     26:  */
                     27: struct socket {
                     28:        short type;                     /* SOCK_STREAM, ... */
                     29:        socket_state state;
                     30:        long flags;
                     31:        struct proto_ops *ops;          /* protocols do most everything */
1.1.1.3 ! root       32:        void *data;                     /* protocol data */
1.1       root       33:        struct socket *conn;            /* server socket connected to */
                     34:        struct socket *iconn;           /* incomplete client connections */
                     35:        struct socket *next;
1.1.1.2   root       36:        struct wait_queue **wait;       /* ptr to place to wait on */
1.1       root       37:        void *dummy;
                     38: };
                     39: 
                     40: struct proto_ops {
                     41:        int (*init)(void);
                     42:        int (*create)(struct socket *sock, int protocol);
                     43:        int (*dup)(struct socket *newsock, struct socket *oldsock);
                     44:        int (*release)(struct socket *sock, struct socket *peer);
                     45:        int (*bind)(struct socket *sock, struct sockaddr *umyaddr,
                     46:                    int sockaddr_len);
                     47:        int (*connect)(struct socket *sock, struct sockaddr *uservaddr,
1.1.1.3 ! root       48:                       int sockaddr_len, int flags);
1.1       root       49:        int (*socketpair)(struct socket *sock1, struct socket *sock2);
1.1.1.3 ! root       50:        int (*accept)(struct socket *sock, struct socket *newsock, int flags);
1.1       root       51:        int (*getname)(struct socket *sock, struct sockaddr *uaddr,
                     52:                       int *usockaddr_len, int peer);
                     53:        int (*read)(struct socket *sock, char *ubuf, int size, int nonblock);
                     54:        int (*write)(struct socket *sock, char *ubuf, int size, int nonblock);
1.1.1.2   root       55:        int (*select)(struct socket *sock, int sel_type, select_table * wait);
1.1       root       56:        int (*ioctl)(struct socket *sock, unsigned int cmd, unsigned long arg);
1.1.1.3 ! root       57:        int (*listen)(struct socket *sock, int len);
        !            58:        int (*send)(struct socket *sock, void *buff, int len, int nonblock,
        !            59:                    unsigned flags);
        !            60:        int (*recv)(struct socket *sock, void *buff, int len, int nonblock,
        !            61:                    unsigned flags);
        !            62:        int (*sendto)(struct socket *sock, void *buff, int len, int nonblock,
        !            63:                      unsigned flags, struct sockaddr *, int addr_len);
        !            64:        int (*recvfrom)(struct socket *sock, void *buff, int len, int nonblock,
        !            65:                        unsigned flags, struct sockaddr *, int *addr_len);
        !            66:        int (*shutdown)(struct socket *sock, int flags);
        !            67:        int (*setsockopt)(struct socket *sock, int level, int optname,
        !            68:                          char *optval, int optlen);
        !            69:        int (*getsockopt)(struct socket *sock, int level, int optname,
        !            70:                          char *optval, int *optlen);
        !            71:        int (*fcntl) (struct socket *sock, unsigned int cmd,
        !            72:                      unsigned long arg);
1.1       root       73: };
                     74: 
                     75: extern int sock_awaitconn(struct socket *mysock, struct socket *servsock);
                     76: 
                     77: #ifdef SOCK_DEBUG
                     78: #define PRINTK printk
                     79: #else
                     80: #define PRINTK (void)
                     81: #endif
                     82: 
                     83: #endif /* _KERN_SOCK_H */

unix.superglobalmegacorp.com