Annotation of researchv9/sys.vax/h/inet/socket.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * socket emulation; actually structures for translating
                      3:  * between streams and tcp control blocks.
                      4:  * note that these sockets typically also take the place of
                      5:  * the 4.2BSD internet control blocks.
                      6:  */
                      7: 
                      8: struct socket{
                      9:        struct          tcpcb *so_tcpcb;
                     10:        struct          queue *so_rq;
                     11:        struct          queue *so_wq;
                     12:        int             so_rcount;
                     13:        int             so_wcount;      /* because q->count is inaccurate */
                     14:        struct          socket *so_head; /* parent who listened */
                     15:        int             so_dev;
                     16:        int             so_state;
                     17:        int             so_options;
                     18:        in_addr         so_laddr;
                     19:        in_addr         so_faddr;
                     20:        tcp_port        so_lport;
                     21:        tcp_port        so_fport;
                     22:        int             so_oobmark;
                     23:        int             so_delimcnt;    /* to detect logical eof */
                     24: };
                     25: 
                     26: #define SO_DONTROUTE   0x1
                     27: #define SO_KEEPALIVE   0x2
                     28: #define SO_ACCEPTCONN  0x4     /* this is real */
                     29: 
                     30: #define SS_OPEN                0x1     /* by user */
                     31: #define SS_PLEASEOPEN  0x2     /* waiting for user open */
                     32: #define SS_RCVATMARK   0x4     /* some kind of OOB */
                     33: #define SS_WAITING     0x8     /* wait for user control */
                     34: #define        SS_ACTIVE       0x10    /* has tcp action */
                     35: #define SS_HANGUP      0x20    /* HANGUP on TH_FIN */
                     36: #define SS_HUNGUP      0x40    /* socket has been hung up (avoid multiple) */
                     37: #define SS_WCLOSED     0x80    /* write side is closed */
                     38: 
                     39: #define socantsendmore(so) (so->so_delimcnt>1 || so->so_state&SS_WCLOSED)
                     40: #define sbrcvspace(so) (so->so_rq ?\
                     41:                         (sorcvhiwat(so) - so->so_rcount)\
                     42:                         : 0)
                     43: #define sosndcc(so)    (so->so_wq ? (so->so_wcount) : 0)
                     44: #define sototcpcb(so)  (so->so_tcpcb)
                     45: #define sorcvhiwat(so) (so->so_rq ? (so->so_rq->qinfo->limit)\
                     46:                        : 0)
                     47: #define sohasoutofband(so)
                     48: 
                     49: #ifdef KERNEL
                     50: extern struct socket *so_lookup();
                     51: extern struct socket *sonewconn();
                     52: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.