Revision 5e173e9f lib/net.h

View differences:

lib/net.h
162 162
{ return !a->pxlen && ip6_zero(a->prefix) && !a->rd; }
163 163

  
164 164

  
165
static inline int net_compare_ip4(const net_addr_ip4 *a, const net_addr_ip4 *b)
166
{ return ip4_compare(a->prefix, b->prefix) ?: uint_cmp(a->pxlen, b->pxlen); }
167

  
168
static inline int net_compare_ip6(const net_addr_ip6 *a, const net_addr_ip6 *b)
169
{ return ip6_compare(a->prefix, b->prefix) ?: uint_cmp(a->pxlen, b->pxlen); }
170

  
171
static inline int net_compare_vpn4(const net_addr_vpn4 *a, const net_addr_vpn4 *b)
172
{ return u64_cmp(a->rd, b->rd) ?: ip4_compare(a->prefix, b->prefix) ?: uint_cmp(a->pxlen, b->pxlen); }
173

  
174
static inline int net_compare_vpn6(const net_addr_vpn6 *a, const net_addr_vpn6 *b)
175
{ return u64_cmp(a->rd, b->rd) ?: ip6_compare(a->prefix, b->prefix) ?: uint_cmp(a->pxlen, b->pxlen); }
176

  
177
int net_compare(const net_addr *a, const net_addr *b);
178

  
179

  
165 180
static inline void net_copy(net_addr *dst, const net_addr *src)
166 181
{ memcpy(dst, src, src->length); }
167 182

  
......
195 210
{ return ip6_hash(n->prefix) ^ ((u32) n->pxlen << 26) ^ u64_hash(n->rd); }
196 211

  
197 212

  
213
static inline int net_validate_ip4(const net_addr_ip4 *n)
214
{
215
  return (n->pxlen <= IP4_MAX_PREFIX_LENGTH) &&
216
    ip4_zero(ip4_and(n->prefix, ip4_not(ip4_mkmask(n->pxlen))));
217
}
218

  
219
static inline int net_validate_ip6(const net_addr_ip6 *n)
220
{
221
  return (n->pxlen <= IP6_MAX_PREFIX_LENGTH) &&
222
    ip6_zero(ip6_and(n->prefix, ip6_not(ip6_mkmask(n->pxlen))));
223
}
224

  
225
int net_validate(const net_addr *N);
226

  
227

  
198 228
static inline void net_normalize_ip4(net_addr_ip4 *n)
199 229
{ n->prefix = ip4_and(n->prefix, ip4_mkmask(n->pxlen)); }
200 230

  
......
203 233

  
204 234
void net_normalize(net_addr *N);
205 235

  
206
int net_validate(const net_addr *N);
207 236

  
208 237
int net_classify(const net_addr *N);
209 238
int net_format(const net_addr *N, char *buf, int buflen);

Also available in: Unified diff