Annotation of embedaddon/quagga/ripngd/ripng_nexthop.h, revision 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>