Annotation of embedaddon/quagga/ripngd/ripng_nexthop.h, revision 1.1.1.2
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
1.1.1.2 ! misho 44: addr6_cmp(struct in6_addr *A, struct in6_addr *B)
! 45: {
1.1 misho 46: #define a(i) A->s6_addr32[i]
47: #define b(i) B->s6_addr32[i]
48:
49: if (a(3) > b(3))
50: return 1;
51: else if ((a(3) == b(3)) && (a(2) > b(2)))
52: return 1;
53: else if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) > b(1)))
54: return 1;
55: else if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) == b(1)) && (a(0) > b(0)))
56: return 1;
57:
58: if ((a(3) == b(3)) && (a(2) == b(2)) && (a(1) == b(1)) && (a(0) == b(0)))
59: return 0;
60:
61: return -1;
62: }
63:
64: #endif /* _ZEBRA_RIPNG_RIPNG_NEXTHOP_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>