1. 程式人生 > >Linux 網路系統學習 IPv6 的初始化(詳細而全面)

Linux 網路系統學習 IPv6 的初始化(詳細而全面)

struct  proto_ops {

            
int                      family;

            
struct  module     * owner;

            
int                      ( * release)   ( struct  socket  * sock);

            
int                      ( * bind)      ( struct  socket  * sock,

                                                      
struct  sockaddr  * myaddr,

                                                      
int  sockaddr_len);

            
int                      ( * connect)   ( struct  socket  * sock,

                                                      
struct  sockaddr  * vaddr,

                                                      
int  sockaddr_len,  int  flags);

            
int                      ( * socketpair)( struct  socket  * sock1,

                                                      
struct  socket  * sock2);

            
int                      ( * accept)    ( struct  socket  * sock,

                                                      
struct  socket  * newsock,  int  flags);

            
int                      ( * getname)   ( struct  socket  * sock,

                                                      
struct  sockaddr  * addr,

                                                      
int * sockaddr_len,  int  peer);

            unsigned 
int        ( * poll)      ( struct  file  * file,  struct  socket  * sock,

                                                      
struct  poll_table_struct  * wait);

            
int                      ( * ioctl)     ( struct  socket  * sock, unsigned  int  cmd,

                                                      unsigned 
long  arg);

            
int                      ( * listen)    ( struct  socket  * sock,  int  len);

            
int                      ( * shutdown)  ( struct  socket  * sock,  int  flags);

            
int                      ( * setsockopt)( struct  socket  * sock,  int  level,

                                                      
int  optname,  char  __user  * optval,  int  optlen);

            
int                      ( * getsockopt)( struct  socket  * sock,  int  level,

                                                      
int  optname,  char  __user  * optval,  int  __user  * optlen);

            
int                      ( * sendmsg)   ( struct  kiocb  * iocb,  struct  socket  * sock,

                                                      
struct  msghdr  * m, size_t total_len);

            
int                      ( * recvmsg)   ( struct  kiocb  * iocb,  struct  socket  * sock,

                                                      
struct  msghdr  * m, size_t total_len,

                                                      
int  flags);

            
int                      ( * mmap)               ( struct  file  * file,  struct  socket  * sock,

                                                      
struct  vm_area_struct  *  vma);

            ssize_t              (
* sendpage)  ( struct  socket  * sock,  struct  page  * page,

                                                      
int  offset, size_t size,  int  flags);

};