/[radius]/radius/lib/iputil.c
ViewVC logotype

Diff of /radius/lib/iputil.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by gray, Sat Nov 8 09:48:09 2003 UTC revision 1.5 by gray, Sun Nov 23 19:08:56 2003 UTC
# Line 177  ip_strtoip(char *ip_str) Line 177  ip_strtoip(char *ip_str)
177  }  }
178  #endif  #endif
179    
180    int
181    ip_getnetaddr(char *str, NETDEF *netdef)
182    {
183            char *p = strchr(str, '/');
184            if (!p) {
185                    netdef->netmask = 0xfffffffful;
186                    netdef->ipaddr = ip_gethostaddr(str);
187            } else {
188                    char buf[DOTTED_QUAD_LEN];
189                    size_t len = p - str;
190    
191                    if (len >= DOTTED_QUAD_LEN)
192                            return 1;
193                    memcpy(buf, str, len);
194                    buf[len] = 0;
195                    netdef->ipaddr = ip_strtoip(buf);
196                                            
197                    if (good_ipaddr(p+1) == 0)
198                            netdef->netmask = ip_strtoip(p+1);
199                    else {
200                            char *endp;
201                            UINT4 n = strtoul(p+1, &endp, 0);
202                            if (*endp || n > 32)
203                                    return 1;
204                            n = 32 - n;
205                            if (n == 32)
206                                    netdef->netmask = 0;
207                            else
208                                    netdef->netmask = (0xfffffffful >> n) << n;
209                    }
210            }
211            return 0;
212    }
213    
214    int
215    ip_addr_in_net_p(NETDEF *netdef, UINT4 ipaddr)
216    {
217            return netdef->ipaddr == (ipaddr & netdef->netmask);
218    }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26