Annotation of embedaddon/quagga/ospfclient/ospf_apiclient.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Client side of OSPF API.
        !             3:  * Copyright (C) 2001, 2002, 2003 Ralph Keller
        !             4:  *
        !             5:  * This file is part of GNU Zebra.
        !             6:  * 
        !             7:  * GNU Zebra is free software; you can redistribute it and/or modify
        !             8:  * it under the terms of the GNU General Public License as published
        !             9:  * by the Free Software Foundation; either version 2, or (at your
        !            10:  * option) any later version.
        !            11:  *
        !            12:  * GNU Zebra is distributed in the hope that it will be useful, but
        !            13:  * WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            15:  * General Public License for more details.
        !            16:  *
        !            17:  * You should have received a copy of the GNU General Public License
        !            18:  * along with GNU Zebra; see the file COPYING.  If not, write to the
        !            19:  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
        !            20:  * Boston, MA 02111-1307, USA.
        !            21:  */
        !            22: 
        !            23: #ifndef _OSPF_APICLIENT_H
        !            24: #define _OSPF_APICLIENT_H
        !            25: 
        !            26: #define MTYPE_OSPF_APICLIENT 0
        !            27: 
        !            28: /* Structure for the OSPF API client */
        !            29: struct ospf_apiclient
        !            30: {
        !            31: 
        !            32:   /* Sockets for sync requests and async notifications */
        !            33:   int fd_sync;
        !            34:   int fd_async;
        !            35: 
        !            36:   /* Pointer to callback functions */
        !            37:   void (*ready_notify) (u_char lsa_type, u_char opaque_type,
        !            38:                        struct in_addr addr);
        !            39:   void (*new_if) (struct in_addr ifaddr, struct in_addr area_id);
        !            40:   void (*del_if) (struct in_addr ifaddr);
        !            41:   void (*ism_change) (struct in_addr ifaddr, struct in_addr area_id,
        !            42:                      u_char status);
        !            43:   void (*nsm_change) (struct in_addr ifaddr, struct in_addr nbraddr,
        !            44:                      struct in_addr router_id, u_char status);
        !            45:   void (*update_notify) (struct in_addr ifaddr, struct in_addr area_id,
        !            46:                         u_char self_origin,
        !            47:                         struct lsa_header * lsa);
        !            48:   void (*delete_notify) (struct in_addr ifaddr, struct in_addr area_id,
        !            49:                         u_char self_origin,
        !            50:                         struct lsa_header * lsa);
        !            51: };
        !            52: 
        !            53: 
        !            54: /* ---------------------------------------------------------
        !            55:  * API function prototypes.
        !            56:  * --------------------------------------------------------- */
        !            57: 
        !            58: /* Open connection to OSPF daemon. Two ports will be allocated on
        !            59:    client, sync channel at syncport and reverse channel at syncport+1 */
        !            60: struct ospf_apiclient *ospf_apiclient_connect (char *host, int syncport);
        !            61: 
        !            62: /* Shutdown connection to OSPF daemon. */
        !            63: int ospf_apiclient_close (struct ospf_apiclient *oclient);
        !            64: 
        !            65: /* Synchronous request to register opaque type. */
        !            66: int ospf_apiclient_register_opaque_type (struct ospf_apiclient *oclient,
        !            67:                                         u_char ltype, u_char otype);
        !            68: 
        !            69: /* Synchronous request to register event mask. */
        !            70: int ospf_apiclient_register_events (struct ospf_apiclient *oclient,
        !            71:                                    u_int32_t mask);
        !            72: 
        !            73: /* Register callback functions.*/
        !            74: void ospf_apiclient_register_callback (struct ospf_apiclient *oclient,
        !            75:                                       void (*ready_notify) (u_char lsa_type,
        !            76:                                                             u_char
        !            77:                                                             opaque_type,
        !            78:                                                             struct in_addr
        !            79:                                                             addr),
        !            80:                                       void (*new_if) (struct in_addr ifaddr,
        !            81:                                                       struct in_addr
        !            82:                                                       area_id),
        !            83:                                       void (*del_if) (struct in_addr ifaddr),
        !            84:                                       void (*ism_change) (struct in_addr
        !            85:                                                           ifaddr,
        !            86:                                                           struct in_addr
        !            87:                                                           area_id,
        !            88:                                                           u_char status),
        !            89:                                       void (*nsm_change) (struct in_addr
        !            90:                                                           ifaddr,
        !            91:                                                           struct in_addr
        !            92:                                                           nbraddr,
        !            93:                                                           struct in_addr
        !            94:                                                           router_id,
        !            95:                                                           u_char status),
        !            96:                                       void (*update_notify) (struct in_addr
        !            97:                                                              ifaddr,
        !            98:                                                              struct in_addr
        !            99:                                                              area_id,
        !           100:                                                              u_char selforig,
        !           101:                                                              struct
        !           102:                                                              lsa_header *
        !           103:                                                              lsa),
        !           104:                                       void (*delete_notify) (struct in_addr
        !           105:                                                              ifaddr,
        !           106:                                                              struct in_addr
        !           107:                                                              area_id,
        !           108:                                                              u_char selforig,
        !           109:                                                              struct
        !           110:                                                              lsa_header *
        !           111:                                                              lsa));
        !           112: 
        !           113: /* Synchronous request to synchronize LSDB. */
        !           114: int ospf_apiclient_sync_lsdb (struct ospf_apiclient *oclient);
        !           115: 
        !           116: /* Synchronous request to originate or update opaque LSA. */
        !           117: int
        !           118: ospf_apiclient_lsa_originate(struct ospf_apiclient *oclient,
        !           119:                              struct in_addr ifaddr,
        !           120:                              struct in_addr area_id,
        !           121:                              u_char lsa_type,
        !           122:                              u_char opaque_type, u_int32_t opaque_id,
        !           123:                              void *opaquedata, int opaquelen);
        !           124: 
        !           125: 
        !           126: /* Synchronous request to delete opaque LSA. Parameter opaque_id is in
        !           127:    host byte order */
        !           128: int ospf_apiclient_lsa_delete (struct ospf_apiclient *oclient,
        !           129:                               struct in_addr area_id, u_char lsa_type,
        !           130:                               u_char opaque_type, u_int32_t opaque_id);
        !           131: 
        !           132: /* Fetch async message and handle it  */
        !           133: int ospf_apiclient_handle_async (struct ospf_apiclient *oclient);
        !           134: 
        !           135: #endif /* _OSPF_APICLIENT_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>