Annotation of embedaddon/quagga/ospfclient/ospf_apiclient.h, revision 1.1.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>