date and time created 88/12/14 15:29:42 by sklower
authorKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Thu, 15 Dec 1988 07:29:42 +0000 (23:29 -0800)
committerKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Thu, 15 Dec 1988 07:29:42 +0000 (23:29 -0800)
SCCS-vsn: sys/netiso/iso_addrs.c 7.1

usr/src/sys/netiso/iso_addrs.c [new file with mode: 0644]

diff --git a/usr/src/sys/netiso/iso_addrs.c b/usr/src/sys/netiso/iso_addrs.c
new file mode 100644 (file)
index 0000000..bf913f7
--- /dev/null
@@ -0,0 +1,58 @@
+/***********************************************************
+               Copyright IBM Corporation 1987
+
+                      All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the name of IBM not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+ * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
+ */
+
+iso_maskmatch(sisoa, sisob, smask)
+       struct sockaddr_iso     *sisoa, *sisob, smask;
+{
+       caddr_t a, b, c;
+       int compare_len;
+
+       if ( smask ) {
+               compare_len = smask->isoa_len;
+       } else if ((compare_len = isoaa->isoa_len) != isoab->isoa_len)
+               return 0;
+
+       return masked_cmp(&sisoa->siso_addr, &sisob->siso_addr, 
+               &smask->siso_addr, compare_len);
+}
+
+int masked_cmp( a, b, c, len)
+       register caddr_t a, b, c;
+       int len;
+{
+       caddr_t ax=a, bx=b, cx=c;
+       register int i;
+
+       for( i=0; i< len; i++) {
+               if( (*a)&(*c) != (*b)&(*c) )
+                       break;
+               a++;
+               b++;
+               c++;
+       }
+       return (int) i;
+}