Author: bapt
Date: Sat Jan 28 17:37:51 2017
New Revision: 312930
URL: https://svnweb.freebsd.org/changeset/base/312930

Log:
  MFC r311659:
  
  remove network mask calculation for Classful network
  
  Nowadays it's not necessary to compute network mask from the IP address and
  compare to given by DHCP.
  
  Submitted by: kczekirda
  Reviewed by:  glebius, bapt
  Sponsored by: Oktawave
  MFC after:    3 weeks
  Differential Revision:        https://reviews.freebsd.org/D8740

Modified:
  stable/11/lib/libstand/bootp.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/lib/libstand/bootp.c
==============================================================================
--- stable/11/lib/libstand/bootp.c      Sat Jan 28 17:08:40 2017        
(r312929)
+++ stable/11/lib/libstand/bootp.c      Sat Jan 28 17:37:51 2017        
(r312930)
@@ -62,8 +62,6 @@ __FBSDID("$FreeBSD$");
 
 struct in_addr servip;
 
-static n_long  nmask, smask;
-
 static time_t  bot;
 
 static char vm_rfc1048[4] = VM_RFC1048;
@@ -223,30 +221,19 @@ bootp(sock, flag)
        bcopy(rbuf.rbootp.bp_file, bootfile, sizeof(bootfile));
        bootfile[sizeof(bootfile) - 1] = '\0';
 
-       if (IN_CLASSA(ntohl(myip.s_addr)))
-               nmask = htonl(IN_CLASSA_NET);
-       else if (IN_CLASSB(ntohl(myip.s_addr)))
-               nmask = htonl(IN_CLASSB_NET);
-       else
-               nmask = htonl(IN_CLASSC_NET);
-#ifdef BOOTP_DEBUG
-       if (debug)
-               printf("'native netmask' is %s\n", intoa(nmask));
-#endif
-
-       /* Check subnet mask against net mask; toss if bogus */
-       if ((nmask & smask) != nmask) {
+       if (!netmask) {
+               if (IN_CLASSA(ntohl(myip.s_addr)))
+                       netmask = htonl(IN_CLASSA_NET);
+               else if (IN_CLASSB(ntohl(myip.s_addr)))
+                       netmask = htonl(IN_CLASSB_NET);
+               else
+                       netmask = htonl(IN_CLASSC_NET);
 #ifdef BOOTP_DEBUG
                if (debug)
-                       printf("subnet mask (%s) bad\n", intoa(smask));
+                       printf("'native netmask' is %s\n", intoa(netmask));
 #endif
-               smask = 0;
        }
 
-       /* Get subnet (or natural net) mask */
-       netmask = nmask;
-       if (smask)
-               netmask = smask;
 #ifdef BOOTP_DEBUG
        if (debug)
                printf("mask: %s\n", intoa(netmask));
@@ -385,7 +372,7 @@ vend_rfc1048(cp, len)
                        break;
 
                if (tag == TAG_SUBNET_MASK) {
-                       bcopy(cp, &smask, sizeof(smask));
+                       bcopy(cp, &netmask, sizeof(netmask));
                }
                if (tag == TAG_GATEWAY) {
                        bcopy(cp, &gateip.s_addr, sizeof(gateip.s_addr));
@@ -445,7 +432,7 @@ vend_cmu(cp)
        vp = (struct cmu_vend *)cp;
 
        if (vp->v_smask.s_addr != 0) {
-               smask = vp->v_smask.s_addr;
+               netmask = vp->v_smask.s_addr;
        }
        if (vp->v_dgate.s_addr != 0) {
                gateip = vp->v_dgate;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to