# 2.11BSD#431 - /usr/src/sys/sys/sys_socket.c

##### Functions

    soo_ioctl         X
    soo_select        X
    soo_stat          X

##### Macros

    cmdbyte           X

       1: /*
       2:  * Copyright (c) 1982, 1986 Regents of the University of California.
       3:  * All rights reserved.
       4:  *
       5:  * Redistribution and use in source and binary forms are permitted
       6:  * provided that this notice is preserved and that due credit is given
       7:  * to the University of California at Berkeley. The name of the University
       8:  * may not be used to endorse or promote products derived from this
       9:  * software without specific prior written permission. This software
      10:  * is provided ``as is'' without express or implied warranty.
      11:  *
      12:  *	@(#)sys_socket.c	7.2 (Berkeley) 3/31/88
      13:  */
      14:
      15: #include "param.h"
      16: #ifdef INET
      17: #include "systm.h"
      18: #include "user.h"
      19: #include "file.h"
      20: #include "mbuf.h"
      21: #include "protosw.h"
      22: #include "socket.h"
      23: #include "socketvar.h"
      24: #include "ioctl.h"
      25: #include "stat.h"
      26:
      27: #include "../net/if.h"
      28: #include "../net/route.h"
      29:
      30: /*ARGSUSED*/
      31: soo_ioctl(so, cmd, data)
      32:     struct socket *so;  /* remember to have the kentry routine pass */
      33:                 /* a socket NOT a file pointer */
      34:     int cmd;
      35:     register caddr_t data;
      36: {
      37:
      38:     switch (cmd) {
      39:
      40:     case FIONBIO:
      41:         if (*(int *)data)
      42:             so->so_state |= SS_NBIO;
      43:         else
      44:             so->so_state &= ~SS_NBIO;
      45:         return (0);
      46:
      47:     case FIOASYNC:
      48:         if (*(int *)data)
      49:             so->so_state |= SS_ASYNC;
      50:         else
      51:             so->so_state &= ~SS_ASYNC;
      52:         return (0);
      53:
      54:     case FIONREAD:
      55:         *(long *)data = so->so_rcv.sb_cc;
      56:         return (0);
      57:
      58:     case SIOCSPGRP:
      59:         so->so_pgrp = *(int *)data;
      60:         return (0);
      61:
      62:     case SIOCGPGRP:
      63:         *(int *)data = so->so_pgrp;
      64:         return (0);
      65:
      66:     case SIOCATMARK:
      67:         *(int *)data = (so->so_state&SS_RCVATMARK) != 0;
      68:         return (0);
      69:     }
      70:     /*
      71: 	 * Interface/routing/protocol specific ioctls:
      72: 	 * interface and routing ioctls should have a
      73: 	 * different entry since a socket's unnecessary
      74: 	 */
      75: #define cmdbyte(x)  (((x) >> 8) & 0xff)
      76:     if (cmdbyte(cmd) == 'i')
      77:         return(u.u_error = ifioctl(so, cmd, data));
      78:     if (cmdbyte(cmd) == 'r')
      79:         return(u.u_error = rtioctl(cmd, data));
      80:     return(u.u_error = (*so->so_proto->pr_usrreq)(so, PRU_CONTROL,
      81:         (struct mbuf *)cmd, (struct mbuf *)data, (struct mbuf *)0));
      82: }
      83:
      84: soo_select(so, which)
      85:     register struct socket *so;  /* kentry() must pass socket not file */
      86:     int which;
      87: {
      88:     register int s = splnet();
      89:
      90:     switch (which) {
      91:
      92:     case FREAD:
      93:         if (soreadable(so)) {
      94:             splx(s);
      95:             return (1);
      96:         }
      97:         sbselqueue(&so->so_rcv);
      98:         break;
      99:
     100:     case FWRITE:
     101:         if (sowriteable(so)) {
     102:             splx(s);
     103:             return (1);
     104:         }
     105:         sbselqueue(&so->so_snd);
     106:         break;
     107:
     108:     case 0:
     109:         if (so->so_oobmark ||
     110:             (so->so_state & SS_RCVATMARK)) {
     111:             splx(s);
     112:             return (1);
     113:         }
     114:         sbselqueue(&so->so_rcv);
     115:         break;
     116:     }
     117:     splx(s);
     118:     return (0);
     119: }
     120:
     121: /*ARGSUSED*/
     122: soo_stat(so, ub)
     123:     register struct socket *so;
     124:     register struct stat *ub;
     125: {
     126:
     127:     bzero((caddr_t)ub, sizeof (*ub));
     128:     return ((*so->so_proto->pr_usrreq)(so, PRU_SENSE,
     129:         (struct mbuf *)ub, (struct mbuf *)0,
     130:         (struct mbuf *)0));
     131: }
     132: #endif

#### Defined functions

soo_ioctl defined in line 31; used 2 times

- in /usr/src/sys/pdp/net_mac.h line 143-145(2)

soo_select defined in line 84; used 2 times

- in /usr/src/sys/pdp/net_mac.h line 149-151(2)

soo_stat defined in line 122; used 2 times

- in /usr/src/sys/pdp/net_mac.h line 154-156(2)

#### Defined macros

cmdbyte defined in line 75; used 2 times

- in line 76-78(2)

Last modified: 1992-12-25 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 648 |