1*36386Ssklower /***********************************************************
2*36386Ssklower Copyright IBM Corporation 1987
3*36386Ssklower
4*36386Ssklower All Rights Reserved
5*36386Ssklower
6*36386Ssklower Permission to use, copy, modify, and distribute this software and its
7*36386Ssklower documentation for any purpose and without fee is hereby granted,
8*36386Ssklower provided that the above copyright notice appear in all copies and that
9*36386Ssklower both that copyright notice and this permission notice appear in
10*36386Ssklower supporting documentation, and that the name of IBM not be
11*36386Ssklower used in advertising or publicity pertaining to distribution of the
12*36386Ssklower software without specific, written prior permission.
13*36386Ssklower
14*36386Ssklower IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15*36386Ssklower ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16*36386Ssklower IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17*36386Ssklower ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18*36386Ssklower WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19*36386Ssklower ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20*36386Ssklower SOFTWARE.
21*36386Ssklower
22*36386Ssklower ******************************************************************/
23*36386Ssklower
24*36386Ssklower /*
25*36386Ssklower * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
26*36386Ssklower */
27*36386Ssklower
28*36386Ssklower iso_maskmatch(sisoa, sisob, smask)
29*36386Ssklower struct sockaddr_iso *sisoa, *sisob, smask;
30*36386Ssklower {
31*36386Ssklower caddr_t a, b, c;
32*36386Ssklower int compare_len;
33*36386Ssklower
34*36386Ssklower if ( smask ) {
35*36386Ssklower compare_len = smask->isoa_len;
36*36386Ssklower } else if ((compare_len = isoaa->isoa_len) != isoab->isoa_len)
37*36386Ssklower return 0;
38*36386Ssklower
39*36386Ssklower return masked_cmp(&sisoa->siso_addr, &sisob->siso_addr,
40*36386Ssklower &smask->siso_addr, compare_len);
41*36386Ssklower }
42*36386Ssklower
masked_cmp(a,b,c,len)43*36386Ssklower int masked_cmp( a, b, c, len)
44*36386Ssklower register caddr_t a, b, c;
45*36386Ssklower int len;
46*36386Ssklower {
47*36386Ssklower caddr_t ax=a, bx=b, cx=c;
48*36386Ssklower register int i;
49*36386Ssklower
50*36386Ssklower for( i=0; i< len; i++) {
51*36386Ssklower if( (*a)&(*c) != (*b)&(*c) )
52*36386Ssklower break;
53*36386Ssklower a++;
54*36386Ssklower b++;
55*36386Ssklower c++;
56*36386Ssklower }
57*36386Ssklower return (int) i;
58*36386Ssklower }
59