protosw.h

Go to the documentation of this file.
00001 /*
00002 ** protosw.h for  in /home/anoman/work/lse/atomix/lseos-net/inet/include
00003 **
00004 ** Copyright (c)2004 Arthur Kopatsy
00005 ** Login   <kopats_a@epita.fr>
00006 **
00007 ** Started on  Sun Oct  3 16:42:34 2004 Arthur Kopatsy
00008 ** Last update Fri Dec  3 11:48:30 2004 Arthur Kopatsy
00009 */
00010 
00011 #ifndef PROTOSW_H_
00012 #define PROTOSW_H_
00013 
00014 typedef int (*t_pr_attach)(struct s_socket      *so);
00015 typedef int (*t_pr_detach)(struct s_socket      *so);
00016 typedef int (*t_pr_bind)(struct s_socket        *so,
00017                          struct sockaddr        *sa,
00018                          socklen_t              salen);
00019 typedef int (*t_pr_connect)(struct s_socket     *so,
00020                             struct sockaddr     *sa,
00021                             socklen_t           salen);
00022 typedef int (*t_pr_send)(struct s_socket        *so,
00023                          struct s_data_buf      *data,
00024                          size_t                 data_size,
00025                          struct sockaddr        *sa,
00026                          socklen_t              salen);
00027 typedef size_t (*t_pr_recv)(struct s_socket     *so,
00028                             pid_t               pid,
00029                             struct sockaddr     *sa,
00030                             socklen_t           *salen,
00031                             vaddr_t             uaddr,
00032                             size_t              usize);
00033 
00034 typedef int (*t_pr_listen)(struct s_socket      *so,
00035                            int                  backlog);
00036 typedef int (*t_pr_accept)(struct s_socket      *so,
00037                            struct sockaddr      *sa,
00038                            socklen_t            *salen,
00039                            void                 **new_pcb);
00040 
00041 typedef int (*t_pr_getpeername)(struct s_socket *so,
00042                                 struct sockaddr *sa,
00043                                 socklen_t       *salen);
00044 typedef int (*t_pr_getsockname)(struct s_socket *so,
00045                                 struct sockaddr *sa,
00046                                 socklen_t       *salen);
00047 
00048 typedef int (*t_pr_poll)(struct s_socket        *so,
00049                          t_pollrec              *pollrec);
00050 
00051 struct s_protosw {
00052   int                   pr_type;
00053   int                   pr_protocol;
00054 
00055   t_pr_attach           pr_attach;
00056   t_pr_detach           pr_detach;
00057   t_pr_bind             pr_bind;
00058   t_pr_connect          pr_connect;
00059   t_pr_send             pr_send;
00060   t_pr_recv             pr_recv;
00061 
00062   t_pr_listen           pr_listen;
00063   t_pr_accept           pr_accept;
00064 
00065   t_pr_getsockname      pr_getsockname;
00066   t_pr_getpeername      pr_getpeername;
00067 
00068   t_pr_poll             pr_poll;
00069 };
00070 
00071 #define INETSW_SIZE             1
00072 
00073 extern const struct s_protosw inetsw[];
00074 
00075 /* protosw.c */
00076 const struct s_protosw *find_in_proto(int type, int protocol);
00077 
00078 #endif

Generated on Wed May 24 23:05:52 2006 for LSE/OS by  doxygen 1.4.6