[BACK]Return to ip_input.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/ip_input.c between version 1.326 and 1.327

version 1.326, 2016/01/08 03:55:39 version 1.327, 2016/01/21 15:27:48
Line 301  void
Line 301  void
 ip_init(void)  ip_init(void)
 {  {
         const struct protosw *pr;          const struct protosw *pr;
           const struct ipprotosw *ippr;
           size_t i;
   
         in_init();          in_init();
         sysctl_net_inet_ip_setup(NULL);          sysctl_net_inet_ip_setup(NULL);
   
           for (i = 0; i < inetdomain.dom_nprotosw; i++) {
                   inetdomain.dom_protosw[i] = &inetsw[i].ippr_protosw;
           }
   
         pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);          pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);
         KASSERT(pr != NULL);          KASSERT(pr != NULL);
           ippr = container_of(pr, struct ipprotosw, ippr_protosw);
   
         ip_pktq = pktq_create(IFQ_MAXLEN, ipintr, NULL);          ip_pktq = pktq_create(IFQ_MAXLEN, ipintr, NULL);
         KASSERT(ip_pktq != NULL);          KASSERT(ip_pktq != NULL);
   
         for (u_int i = 0; i < IPPROTO_MAX; i++) {          for (i = 0; i < IPPROTO_MAX; i++) {
                 ip_protox[i] = pr - inetsw;                  ip_protox[i] = ippr - inetsw;
         }          }
         for (pr = inetdomain.dom_protosw;          for (i = 0; i < inetdomain.dom_nprotosw; i++) {
             pr < inetdomain.dom_protoswNPROTOSW; pr++)                  pr = inetdomain.dom_protosw[i];
                   ippr = container_of(pr, struct ipprotosw, ippr_protosw);
                 if (pr->pr_domain->dom_family == PF_INET &&                  if (pr->pr_domain->dom_family == PF_INET &&
                     pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW)                      pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW)
                         ip_protox[pr->pr_protocol] = pr - inetsw;                          ip_protox[pr->pr_protocol] = ippr - inetsw;
           }
   
         ip_reass_init();          ip_reass_init();
   
Line 755  ours:
Line 764  ours:
          * code - like UDP/TCP/raw IP.           * code - like UDP/TCP/raw IP.
          */           */
         if (ipsec_used &&          if (ipsec_used &&
             (inetsw[ip_protox[ip->ip_p]].pr_flags & PR_LASTHDR) != 0) {              ((inetsw[ip_protox[ip->ip_p]].ippr_protosw.pr_flags & PR_LASTHDR)
                   != 0)) {
                 SOFTNET_LOCK();                  SOFTNET_LOCK();
                 if (ipsec4_input(m, 0) != 0) {                  if (ipsec4_input(m, 0) != 0) {
                         SOFTNET_UNLOCK();                          SOFTNET_UNLOCK();
Line 777  ours:
Line 787  ours:
         const int off = hlen, nh = ip->ip_p;          const int off = hlen, nh = ip->ip_p;
   
         SOFTNET_LOCK();          SOFTNET_LOCK();
         (*inetsw[ip_protox[nh]].pr_input)(m, off, nh);          (*inetsw[ip_protox[nh]].ippr_input)(m, off, nh);
         SOFTNET_UNLOCK();          SOFTNET_UNLOCK();
         return;          return;
 bad:  bad:

Legend:
Removed from v.1.326  
changed lines
  Added in v.1.327

CVSweb <webmaster@jp.NetBSD.org>