Author: ab
Date: 2006-06-22 13:24:00 +0000 (Thu, 22 Jun 2006)
New Revision: 16460

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16460

Log:
Finish TODO item for remote address checking and fix little glitches while in 
the same file
Modified:
   branches/tmp/vl-messaging/source/lib/messages_stream.c


Changeset:
Modified: branches/tmp/vl-messaging/source/lib/messages_stream.c
===================================================================
--- branches/tmp/vl-messaging/source/lib/messages_stream.c      2006-06-22 
13:07:13 UTC (rev 16459)
+++ branches/tmp/vl-messaging/source/lib/messages_stream.c      2006-06-22 
13:24:00 UTC (rev 16460)
@@ -214,10 +214,35 @@
 ****************************************************************************/
 
 #ifdef WITH_CLUSTERWIDE_MESSAGING
+#define ALLONES  ((uint32)0xFFFFFFFF)
+#define MKNETADDR(_IP, _NM) ((_IP) & (_NM))
 static BOOL remote_address_allowed(struct sockaddr_in* addr)
 {
-       /* TODO */
-       return True;
+       struct in_addr ip, nmask;
+       char *token = SMB_STRDUP(lp_messaging_network()), *p;
+
+       p = strchr_m(token,'/');
+       if (p == NULL) {
+               ip = *interpret_addr2(token);
+               nmask.s_addr = ALLONES;
+       } else {
+               /* parse it into an IP address/netmasklength pair */
+               *p = 0;
+               ip = *interpret_addr2(token);
+               p++;
+
+               if (strlen(p) > 2) {
+                       nmask = *interpret_addr2(p);
+               } else {
+                       nmask.s_addr = htonl(((ALLONES >> atoi(p)) ^ ALLONES));
+               }
+       }
+
+       SAFE_FREE(token);
+       
+       /* check the address */
+       return (MKNETADDR(ip.s_addr, nmask.s_addr) == 
+                       MKNETADDR(addr->sin_addr.s_addr, nmask.s_addr));
 }
 #endif
 
@@ -241,7 +266,7 @@
 
        if (addr.sin_family != AF_INET) {
                DEBUG(5, ("Expected AF_INET(%d) in accept, got %d\n",
-                                 AF_UNIX, addr.sin_family));
+                                 AF_INET, addr.sin_family));
                close(fd);
                return;
        }
@@ -462,7 +487,7 @@
                                                                                
                        TALLOC_CTX *mem_ctx,
                                                                                
                        struct message_list *cnt)
 {
-       size_t len, to_read;
+       size_t len = 0, to_read;
        ssize_t nread;
        uint8_t *target;
 

Reply via email to