Annotation of embedaddon/quagga/ripngd/ripng_nexthop.h, revision 1.1.1.1
1.1 misho 1: /* RIPng nexthop support
2: * Copyright (C) 6WIND Vincent Jardin <vincent.jardin@6wind.com>
3: *
4: * This file is part of GNU Zebra.
5: *
6: * GNU Zebra is free software; you can redistribute it and/or modify it
7: * under the terms of the GNU General Public License as published by the
8: * Free Software Foundation; either version 2, or (at your option) any
9: * later version.
10: *
11: * GNU Zebra is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * General Public License for more details.
15: *
16: * You should have received a copy of the GNU General Public License
17: * along with GNU Zebra; see the file COPYING. If not, write to the Free
18: * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19: * 02111-1307, USA.
20: */
21:
22: #ifndef _ZEBRA_RIPNG_RIPNG_NEXTHOP_H
23: #define _ZEBRA_RIPNG_RIPNG_NEXTHOP_H
24:
25: #include <zebra.h>
26: #include "linklist.h"
27: #include "ripngd/ripng_route.h"
28: #include "ripngd/ripngd.h"
29:
30: extern struct list * ripng_rte_new(void);
31: extern void ripng_rte_free(struct list *ripng_rte_list);
32: extern void ripng_rte_add(struct list *ripng_rte_list, struct prefix_ipv6 *p,
33: struct ripng_info *rinfo,
34: struct ripng_aggregate *aggregate);
35: extern void ripng_rte_send(struct list *ripng_rte_list, struct interface *ifp,
36: struct sockaddr_in6 *to);
37:
38: /***
39: * 1 if A > B
40: * 0 if A = B
41: * -1 if A < B
42: **/
43: static inline int
44: addr6_cmp(struct in6_addr *A, struct in6_addr *B) {
45:
46: #ifndef s6_addr32
47: #if defined(SUNOS_5)
48: /* Some SunOS define s6_addr32 only to kernel */
49: #define s6_addr32 _S6_un._S6_u32
50: #else
51: #define s6_addr32 __u6_addr.__u6_addr32
52: #endif /* SUNOS_5 */
53: #endif /*s6_addr32*/
54:
55: #define a(i) A->s6_addr32[i]
56: #define b(i) B->s6_addr32[i]
57:
58: if (a(3) > b(3))
59: return 1;
60: else if ((a(3) == b(3)) && (a(2) > b(2)))
61: return 1;
62: else if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) > b(1)))
63: return 1;
64: else if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) == b(1)) && (a(0) > b(0)))
65: return 1;
66:
67: if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) == b(1)) && (a(0) == b(0)))
68: return 0;
69:
70: return -1;
71: }
72:
73: #endif /* _ZEBRA_RIPNG_RIPNG_NEXTHOP_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>