[BACK]Return to uipc_socket.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/uipc_socket.c between version 1.122.4.3 and 1.123

version 1.122.4.3, 2007/02/01 08:48:39 version 1.123, 2006/10/02 00:02:04
Line 473  socreate(int dom, struct socket **aso, i
Line 473  socreate(int dom, struct socket **aso, i
         uid_t           uid;          uid_t           uid;
         int             error, s;          int             error, s;
   
         error = kauth_authorize_network(l->l_cred, KAUTH_NETWORK_SOCKET,  
             KAUTH_REQ_NETWORK_SOCKET_OPEN, KAUTH_ARG(dom), KAUTH_ARG(type),  
             KAUTH_ARG(proto));  
         if (error)  
                 return (error);  
   
         if (proto)          if (proto)
                 prp = pffindproto(dom, proto, type);                  prp = pffindproto(dom, proto, type);
         else          else
Line 512  socreate(int dom, struct socket **aso, i
Line 506  socreate(int dom, struct socket **aso, i
 #endif  #endif
         if (l != NULL) {          if (l != NULL) {
                 uid = kauth_cred_geteuid(l->l_cred);                  uid = kauth_cred_geteuid(l->l_cred);
                   kauth_cred_hold(l->l_cred);
                   so->so_cred = l->l_cred;
         } else {          } else {
                 uid = 0;                  uid = 0;
                   so->so_cred = NULL;
         }          }
         so->so_uidinfo = uid_find(uid);          so->so_uidinfo = uid_find(uid);
         error = (*prp->pr_usrreq)(so, PRU_ATTACH, (struct mbuf *)0,          error = (*prp->pr_usrreq)(so, PRU_ATTACH, (struct mbuf *)0,
Line 733  sodisconnect(struct socket *so)
Line 730  sodisconnect(struct socket *so)
                 error = EALREADY;                  error = EALREADY;
                 goto bad;                  goto bad;
         }          }
           if (so->so_cred != NULL)
                   kauth_cred_free(so->so_cred);
         error = (*so->so_proto->pr_usrreq)(so, PRU_DISCONNECT,          error = (*so->so_proto->pr_usrreq)(so, PRU_DISCONNECT,
             (struct mbuf *)0, (struct mbuf *)0, (struct mbuf *)0,              (struct mbuf *)0, (struct mbuf *)0, (struct mbuf *)0,
             (struct lwp *)0);              (struct lwp *)0);
Line 1423  sosetopt(struct socket *so, int level, i
Line 1422  sosetopt(struct socket *so, int level, i
 {  {
         int             error;          int             error;
         struct mbuf     *m;          struct mbuf     *m;
         struct linger   *l;  
   
         error = 0;          error = 0;
         m = m0;          m = m0;
Line 1440  sosetopt(struct socket *so, int level, i
Line 1438  sosetopt(struct socket *so, int level, i
                                 error = EINVAL;                                  error = EINVAL;
                                 goto bad;                                  goto bad;
                         }                          }
                         l = mtod(m, struct linger *);                          if (mtod(m, struct linger *)->l_linger < 0 ||
                         if (l->l_linger < 0 || l->l_linger > USHRT_MAX ||                              mtod(m, struct linger *)->l_linger > (INT_MAX / hz)) {
                             l->l_linger > (INT_MAX / hz)) {  
                                 error = EDOM;                                  error = EDOM;
                                 goto bad;                                  goto bad;
                         }                          }
                         so->so_linger = l->l_linger;                          so->so_linger = mtod(m, struct linger *)->l_linger;
                         if (l->l_onoff)                          /* fall thru... */
                                 so->so_options |= SO_LINGER;  
                         else  
                                 so->so_options &= ~SO_LINGER;  
                         break;  
   
                 case SO_DEBUG:                  case SO_DEBUG:
                 case SO_KEEPALIVE:                  case SO_KEEPALIVE:
Line 1591  sogetopt(struct socket *so, int level, i
Line 1584  sogetopt(struct socket *so, int level, i
                 case SO_LINGER:                  case SO_LINGER:
                         m->m_len = sizeof(struct linger);                          m->m_len = sizeof(struct linger);
                         mtod(m, struct linger *)->l_onoff =                          mtod(m, struct linger *)->l_onoff =
                             (so->so_options & SO_LINGER) ? 1 : 0;                                  so->so_options & SO_LINGER;
                         mtod(m, struct linger *)->l_linger = so->so_linger;                          mtod(m, struct linger *)->l_linger = so->so_linger;
                         break;                          break;
   
Line 1604  sogetopt(struct socket *so, int level, i
Line 1597  sogetopt(struct socket *so, int level, i
                 case SO_BROADCAST:                  case SO_BROADCAST:
                 case SO_OOBINLINE:                  case SO_OOBINLINE:
                 case SO_TIMESTAMP:                  case SO_TIMESTAMP:
                         *mtod(m, int *) = (so->so_options & optname) ? 1 : 0;                          *mtod(m, int *) = so->so_options & optname;
                         break;                          break;
   
                 case SO_TYPE:                  case SO_TYPE:

Legend:
Removed from v.1.122.4.3  
changed lines
  Added in v.1.123

CVSweb <webmaster@jp.NetBSD.org>