netrestrict-netinfo-20081129
authorJeffrey Altman <jaltman@your-file-system.com>
Sat, 29 Nov 2008 18:55:25 +0000 (18:55 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 29 Nov 2008 18:55:25 +0000 (18:55 +0000)
LICENSE MIT

Rename rxi_getAllAddrMaskMtu to rx_getAllAddrMaskMtu.

Implement rx_getAllAddrMaskMtu for Windows.

Add rx_getAllAddrMaskMtu to the libafsrpc exports list.

Remove restrictions on use of NetRestrict / NetInfo files from
all services on Windows.

15 files changed:
src/bozo/bosserver.c
src/budb/server.c
src/butc/tcmain.c
src/kauth/kaserver.c
src/libafsrpc/afsrpc.def
src/ptserver/ptserver.c
src/rx/rx_getaddr.c
src/rx/rx_prototypes.h
src/rx/rx_user.c
src/ubik/beacon.c
src/update/server.c
src/util/NTMakefile
src/util/netutils.c
src/viced/viced.c
src/volser/volmain.c

index 4f54953..f29ba8f 100644 (file)
@@ -1041,7 +1041,6 @@ main(int argc, char **argv, char **envp)
 
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -1050,7 +1049,6 @@ main(int argc, char **argv, char **envp)
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }
index 1da7900..b929305 100644 (file)
@@ -542,7 +542,6 @@ main(argc, argv)
 
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -551,7 +550,6 @@ main(argc, argv)
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }
index c9bb6c0..935aea4 100644 (file)
@@ -1034,7 +1034,6 @@ WorkerBee(struct cmd_syndesc *as, void *arock)
 
     if (rxBind) {
         afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -1043,7 +1042,6 @@ WorkerBee(struct cmd_syndesc *as, void *arock)
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }
index 396830c..9c22ba2 100644 (file)
@@ -390,7 +390,6 @@ main(argc, argv)
 
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -399,7 +398,6 @@ main(argc, argv)
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }
index 2cf4b9f..6409618 100644 (file)
@@ -236,6 +236,7 @@ EXPORTS
         rx_SetRxDeadTime                        @241
         rx_GetMinUdpBufSize                     @242
         rx_SetUdpBufSize                        @243        
+        rx_getAllAddrMaskMtu                    @244        
 
 ; for performance testing
         rx_TSFPQGlobSize                        @2001 DATA
index 9b33ecf..d2ee077 100644 (file)
@@ -515,7 +515,6 @@ main(int argc, char **argv)
 
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
        if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
            AFSDIR_SERVER_NETINFO_FILEPATH) {
            char reason[1024];
@@ -524,7 +523,6 @@ main(int argc, char **argv)
                                           AFSDIR_SERVER_NETINFO_FILEPATH,
                                           AFSDIR_SERVER_NETRESTRICT_FILEPATH);
        } else 
-#endif
        {
            ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
        }
index c1475a8..b15dfcd 100644 (file)
@@ -225,8 +225,8 @@ rx_getAllAddr_internal(afs_uint32 buffer[], int maxSize, int loopbacks)
 }
 
 int
-rxi_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
-                     afs_uint32 mtuBuffer[], int maxSize)
+rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
+                    afs_uint32 mtuBuffer[], int maxSize)
 {
     int s;
 
@@ -424,8 +424,8 @@ rx_getAllAddr(afs_uint32 buffer[], int maxSize)
  * by afsi_SetServerIPRank().
  */
 int
-rxi_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
-                     afs_uint32 mtuBuffer[], int maxSize)
+rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
+                     afs_uint32 mtuBuffer[], int maxSize)
 {
     int s;
     int i, len, count = 0;
index b0c3652..97c57bd 100644 (file)
@@ -334,7 +334,7 @@ extern int rxevent_RaiseEvents(struct clock *next);
 extern void rxi_setaddr(afs_uint32 x);
 extern afs_uint32 rxi_getaddr(void);
 extern int rx_getAllAddr(afs_uint32 * buffer, int maxSize);
-extern int rxi_getAllAddrMaskMtu(afs_uint32 addrBuffer[], 
+extern int rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], 
                                 afs_uint32 maskBuffer[],
                                 afs_uint32 mtuBuffer[],
                                 int maxSize);
index 4537559..efd5f22 100644 (file)
@@ -308,14 +308,14 @@ rx_getAllAddr(afs_uint32 * buffer, int maxSize)
     /* The IP address list can change so we must query for it */
     rx_GetIFInfo();
 
-#ifndef AFS_NT40_ENV
+#ifdef AFS_DJGPP_ENV
     /* we don't want to use the loopback adapter which is first */
     /* this is a bad bad hack.
      * and doesn't hold true on Windows.
      */
     if ( rxi_numNetAddrs > 1 )
         offset = 1;
-#endif /* AFS_NT40_ENV */
+#endif /* AFS_DJGPP_ENV */
 
     for (count = 0; offset < rxi_numNetAddrs && maxSize > 0;
         count++, offset++, maxSize--)
@@ -323,6 +323,39 @@ rx_getAllAddr(afs_uint32 * buffer, int maxSize)
 
     return count;
 }
+
+/* this function returns the total number of interface addresses
+ * the buffer has to be passed in by the caller. It also returns
+ * the matching interface mask and mtu.  All values are returned
+ * in network byte order.
+ */
+int
+rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
+                     afs_uint32 mtuBuffer[], int maxSize)
+{
+    int count = 0, offset = 0;
+
+    /* The IP address list can change so we must query for it */
+    rx_GetIFInfo();
+
+#ifdef AFS_DJGPP_ENV
+    /* we don't want to use the loopback adapter which is first */
+    /* this is a bad bad hack.
+     * and doesn't hold true on Windows.
+     */
+    if ( rxi_numNetAddrs > 1 )
+        offset = 1;
+#endif /* AFS_DJGPP_ENV */
+
+    for (count = 0; 
+         offset < rxi_numNetAddrs && maxSize > 0;
+         count++, offset++, maxSize--) {
+       addrBuffer[count] = htonl(rxi_NetAddrs[offset]);
+       maskBuffer[count] = htonl(myNetMasks[offset]);
+       mtuBuffer[count]  = htonl(myNetMTUs[offset]);
+    }
+    return count;
+}
 #endif
 
 #ifdef AFS_NT40_ENV
index 9a996c7..c2e3c41 100644 (file)
@@ -528,10 +528,6 @@ verifyInterfaceAddress(ame, info, aservers)
            totalServers++;
     }
 
-#ifdef AFS_NT40_ENV
-    /* get all my interface addresses in net byte order */
-    count = rx_getAllAddr(myAddr, UBIK_MAX_INTERFACE_ADDR);
-#else
     if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || AFSDIR_SERVER_NETINFO_FILEPATH) {
        /*
         * Find addresses we are supposed to register as per the netrestrict file
@@ -554,7 +550,6 @@ verifyInterfaceAddress(ame, info, aservers)
        /* get all my interface addresses in net byte order */
        count = rx_getAllAddr(myAddr, UBIK_MAX_INTERFACE_ADDR);
     }
-#endif
 
     if (count <= 0) {          /* no address found */
        ubik_print("ubik: No network addresses found, aborting..");
index f66edc0..b91c9a1 100644 (file)
@@ -278,7 +278,6 @@ main(int argc, char *argv[])
 
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -287,7 +286,6 @@ main(int argc, char *argv[])
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }
index e63ea76..cdcbf79 100644 (file)
@@ -19,6 +19,7 @@ INCFILES =\
        $(INCFILEDIR)\errors.h \
        $(INCFILEDIR)\itc.h \
        $(INCFILEDIR)\vice.h \
+        $(INCFILEDIR)\netutils.h \
        $(INCFILEDIR)\pthread_glock.h \
        $(INCFILEDIR)\pthread_nosigs.h \
        $(INCFILEDIR)\errmap_nt.h \
@@ -45,6 +46,7 @@ LIBOBJS = \
        $(OUT)\isathing.obj \
        $(OUT)\kreltime.obj \
        $(OUT)\ktime.obj \
+        $(OUT)\netutils.obj \
        $(OUT)\regex.obj \
        $(OUT)\readdir_nt.obj \
        $(OUT)\serverLog.obj \
index 63d2995..5f807c2 100644 (file)
@@ -30,13 +30,17 @@ RCSID
 #include "afs/sysincludes.h"
 #include "afsincludes.h"
 #else
+#ifdef AFS_NT40_ENV
+#include <winsock2.h>
+#else 
 #ifdef __FreeBSD__
 #include <sys/types.h>
 #endif
 #include <netinet/in.h>
-#include <errno.h>
 #include <sys/errno.h>
 #endif
+#include <errno.h>
+#endif
 
 #include "assert.h"
 #include "afsutil.h"
@@ -116,7 +120,7 @@ extract_Addr(char *line, int maxSize)
  * caller can choose to ignore the entire file but should write
  * something to a log file).
  *
- * All addresses should be in NBO (as returned by rx_getAllAddr() and
+ * All addresses should be in NBO (as returned by rx_getAllAddrMaskMtu() and
  * parsed by extract_Addr().
  */
 /*
@@ -154,7 +158,7 @@ parseNetRestrictFile_int(afs_uint32 outAddrs[], afs_uint32 * mask,
     strcpy(reason, "");
 
     /* get all network interfaces from the kernel */
-    neaddrs = rxi_getAllAddrMaskMtu(eAddrs, eMask, eMtu, MAXIPADDRS);
+    neaddrs = rx_getAllAddrMaskMtu(eAddrs, eMask, eMtu, MAXIPADDRS);
     if (neaddrs <= 0) {
        sprintf(reason, "No existing IP interfaces found");
        return -1;
@@ -269,7 +273,7 @@ ParseNetInfoFile_int(afs_uint32 * final, afs_uint32 * mask, afs_uint32 * mtu,
 
     /* get all network interfaces from the kernel */
     existNu =
-       rxi_getAllAddrMaskMtu(existingAddr, existingMask, existingMtu,
+       rx_getAllAddrMaskMtu(existingAddr, existingMask, existingMtu,
                              MAXIPADDRS);
     if (existNu < 0)
        return existNu;
index 4c8f006..c8fee20 100644 (file)
@@ -1812,7 +1812,6 @@ SetupVL()
     extern int rxi_numNetAddrs;
     extern afs_uint32 rxi_NetAddrs[];
 
-#ifndef AFS_NT40_ENV
     if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || AFSDIR_SERVER_NETINFO_FILEPATH) {
        /*
         * Find addresses we are supposed to register as per the netrestrict 
@@ -1830,7 +1829,6 @@ SetupVL()
        }
        FS_HostAddr_cnt = (afs_uint32) code;
     } else
-#endif
     {
        FS_HostAddr_cnt = rx_getAllAddr(FS_HostAddrs, ADDRSPERSITE);
     }
index bb9cd92..5181abf 100644 (file)
@@ -450,7 +450,6 @@ main(int argc, char **argv)
        rx_SetUdpBufSize(udpBufSize);   /* set the UDP buffer size for receive */
     if (rxBind) {
        afs_int32 ccode;
-#ifndef AFS_NT40_ENV
         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
             AFSDIR_SERVER_NETINFO_FILEPATH) {
             char reason[1024];
@@ -459,7 +458,6 @@ main(int argc, char **argv)
                                            AFSDIR_SERVER_NETINFO_FILEPATH,
                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
         } else 
-#endif 
        {
             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
         }