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

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

Diff for /src/sys/netinet/raw_ip.c between version 1.135 and 1.136

version 1.135, 2014/07/23 13:17:18 version 1.136, 2014/07/24 15:12:03
Line 112  struct inpcbtable rawcbtable;
Line 112  struct inpcbtable rawcbtable;
   
 int      rip_pcbnotify(struct inpcbtable *, struct in_addr,  int      rip_pcbnotify(struct inpcbtable *, struct in_addr,
     struct in_addr, int, int, void (*)(struct inpcb *, int));      struct in_addr, int, int, void (*)(struct inpcb *, int));
 int      rip_bind(struct inpcb *, struct mbuf *);  
 int      rip_connect(struct inpcb *, struct mbuf *);  int      rip_connect(struct inpcb *, struct mbuf *);
 void     rip_disconnect(struct inpcb *);  void     rip_disconnect(struct inpcb *);
   
Line 482  rip_ctloutput(int op, struct socket *so,
Line 481  rip_ctloutput(int op, struct socket *so,
 }  }
   
 int  int
 rip_bind(struct inpcb *inp, struct mbuf *nam)  
 {  
         struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *);  
   
         if (nam->m_len != sizeof(*addr))  
                 return (EINVAL);  
         if (!IFNET_FIRST())  
                 return (EADDRNOTAVAIL);  
         if (addr->sin_family != AF_INET)  
                 return (EAFNOSUPPORT);  
         if (!in_nullhost(addr->sin_addr) &&  
             ifa_ifwithaddr(sintosa(addr)) == 0)  
                 return (EADDRNOTAVAIL);  
         inp->inp_laddr = addr->sin_addr;  
         return (0);  
 }  
   
 int  
 rip_connect(struct inpcb *inp, struct mbuf *nam)  rip_connect(struct inpcb *inp, struct mbuf *nam)
 {  {
         struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *);          struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *);
Line 572  rip_accept(struct socket *so, struct mbu
Line 553  rip_accept(struct socket *so, struct mbu
         KASSERT(solocked(so));          KASSERT(solocked(so));
   
         panic("rip_accept");          panic("rip_accept");
         /* NOT REACHED */  
           return EOPNOTSUPP;
   }
   
   static int
   rip_bind(struct socket *so, struct mbuf *nam)
   {
           struct inpcb *inp = sotoinpcb(so);
           struct sockaddr_in *addr;
           int error = 0;
           int s;
   
           KASSERT(solocked(so));
           KASSERT(inp != NULL);
           KASSERT(nam != NULL);
   
           s = splsoftnet();
           addr = mtod(nam, struct sockaddr_in *);
           if (nam->m_len != sizeof(*addr)) {
                   error = EINVAL;
                   goto release;
           }
           if (!IFNET_FIRST()) {
                   error = EADDRNOTAVAIL;
                   goto release;
           }
           if (addr->sin_family != AF_INET) {
                   error = EAFNOSUPPORT;
                   goto release;
           }
           if (!in_nullhost(addr->sin_addr) &&
               ifa_ifwithaddr(sintosa(addr)) == 0) {
                   error = EADDRNOTAVAIL;
                   goto release;
           }
           inp->inp_laddr = addr->sin_addr;
   
   release:
           splx(s);
           return error;
   }
   
   static int
   rip_listen(struct socket *so)
   {
           KASSERT(solocked(so));
   
         return EOPNOTSUPP;          return EOPNOTSUPP;
 }  }
   
Line 642  rip_usrreq(struct socket *so, int req, s
Line 669  rip_usrreq(struct socket *so, int req, s
         KASSERT(req != PRU_ATTACH);          KASSERT(req != PRU_ATTACH);
         KASSERT(req != PRU_DETACH);          KASSERT(req != PRU_DETACH);
         KASSERT(req != PRU_ACCEPT);          KASSERT(req != PRU_ACCEPT);
           KASSERT(req != PRU_BIND);
           KASSERT(req != PRU_LISTEN);
         KASSERT(req != PRU_CONTROL);          KASSERT(req != PRU_CONTROL);
         KASSERT(req != PRU_SENSE);          KASSERT(req != PRU_SENSE);
         KASSERT(req != PRU_PEERADDR);          KASSERT(req != PRU_PEERADDR);
Line 671  rip_usrreq(struct socket *so, int req, s
Line 700  rip_usrreq(struct socket *so, int req, s
   
         switch (req) {          switch (req) {
   
         case PRU_BIND:  
                 error = rip_bind(inp, nam);  
                 break;  
   
         case PRU_LISTEN:  
                 error = EOPNOTSUPP;  
                 break;  
   
         case PRU_CONNECT:          case PRU_CONNECT:
                 error = rip_connect(inp, nam);                  error = rip_connect(inp, nam);
                 if (error)                  if (error)
Line 753  PR_WRAP_USRREQS(rip)
Line 774  PR_WRAP_USRREQS(rip)
 #define rip_attach      rip_attach_wrapper  #define rip_attach      rip_attach_wrapper
 #define rip_detach      rip_detach_wrapper  #define rip_detach      rip_detach_wrapper
 #define rip_accept      rip_accept_wrapper  #define rip_accept      rip_accept_wrapper
   #define rip_bind        rip_bind_wrapper
   #define rip_listen      rip_listen_wrapper
 #define rip_ioctl       rip_ioctl_wrapper  #define rip_ioctl       rip_ioctl_wrapper
 #define rip_stat        rip_stat_wrapper  #define rip_stat        rip_stat_wrapper
 #define rip_peeraddr    rip_peeraddr_wrapper  #define rip_peeraddr    rip_peeraddr_wrapper
Line 765  const struct pr_usrreqs rip_usrreqs = {
Line 788  const struct pr_usrreqs rip_usrreqs = {
         .pr_attach      = rip_attach,          .pr_attach      = rip_attach,
         .pr_detach      = rip_detach,          .pr_detach      = rip_detach,
         .pr_accept      = rip_accept,          .pr_accept      = rip_accept,
           .pr_bind        = rip_bind,
           .pr_listen      = rip_listen,
         .pr_ioctl       = rip_ioctl,          .pr_ioctl       = rip_ioctl,
         .pr_stat        = rip_stat,          .pr_stat        = rip_stat,
         .pr_peeraddr    = rip_peeraddr,          .pr_peeraddr    = rip_peeraddr,

Legend:
Removed from v.1.135  
changed lines
  Added in v.1.136

CVSweb <webmaster@jp.NetBSD.org>