2 * $Id: client_main.c,v 1.1 2002/12/13 20:15:30 paul Exp $
4 * GNU Zebra client test main routine.
5 * Copyright (C) 1997 Kunihiro Ishiguro
7 * This file is part of GNU Zebra.
9 * GNU Zebra is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2, or (at your option) any
14 * GNU Zebra is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with GNU Zebra; see the file COPYING. If not, write to the Free
21 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
32 #include "zebra/rib.h"
33 #include "zebra/zserv.h"
35 struct thread
*master
;
37 /* Zebra client structure. */
38 struct zclient
*zclient
= NULL
;
43 /* IPv4 route add and delete test. */
45 zebra_test_ipv4 (int command
, int type
, char *prefix
, char *gateway
,
53 str2prefix_ipv4 (prefix
, &p
);
54 inet_aton (gateway
, &gate
);
61 SET_FLAG (api
.message
, ZAPI_MESSAGE_NEXTHOP
);
67 SET_FLAG (api
.message
, ZAPI_MESSAGE_DISTANCE
);
68 api
.distance
= distance
;
74 case ZEBRA_IPV4_ROUTE_ADD
:
75 zapi_ipv4_add (zclient
, &p
, &api
);
77 case ZEBRA_IPV4_ROUTE_DELETE
:
78 zapi_ipv4_delete (zclient
, &p
, &api
);
84 /* IPv6 route add and delete test. */
86 zebra_test_v6 (int sock
)
89 struct in6_addr nexthop
;
91 str2prefix_ipv6 ("3ffe:506::2/128", &p
);
92 inet_pton (AF_INET6
, "::1", &nexthop
);
94 /* zebra_ipv6_add (sock, ZEBRA_ROUTE_STATIC, 0, &p, &nexthop, 1); */
97 /* zebra_ipv6_delete (sock, ZEBRA_ROUTE_STATIC, 0, &p, &nexthop, 1); */
99 #endif /* HAVE_IPV6 */
101 /* Print out usage and exit. */
105 fprintf (stderr
, "Usage: client filename\n");
115 { "static", ZEBRA_ROUTE_STATIC
},
116 { "rip", ZEBRA_ROUTE_RIP
},
117 { "ripng", ZEBRA_ROUTE_RIPNG
},
118 { "ospf", ZEBRA_ROUTE_OSPF
},
119 { "ospf6", ZEBRA_ROUTE_OSPF6
},
120 { "bgp", ZEBRA_ROUTE_BGP
},
124 /* Zebra route simulator. */
129 char distance_str
[BUFSIZ
];
132 while (fgets (buf
, sizeof buf
, fp
))
137 char str
[BUFSIZ
], command
[BUFSIZ
], prefix
[BUFSIZ
], gateway
[BUFSIZ
];
144 type
= ZEBRA_ROUTE_STATIC
;
146 ret
= sscanf (buf
, "%s %s %s %s %s\n", command
, str
, prefix
, gateway
,
151 distance
= atoi (distance_str
);
155 ret
= sscanf (buf
, "%s %s %s %s\n", command
, str
, prefix
, gateway
);
161 for (i
= 0; i
< 10; i
++)
163 if (!zebra_type
[i
].str
)
165 if (strcmp (zebra_type
[i
].str
, str
) == 0)
167 type
= zebra_type
[i
].type
;
172 if (strcmp (command
, "add") == 0)
174 zebra_test_ipv4 (ZEBRA_IPV4_ROUTE_ADD
, type
, prefix
, gateway
,
180 if (strcmp (command
, "del") == 0)
182 zebra_test_ipv4 (ZEBRA_IPV4_ROUTE_DELETE
, type
, prefix
, gateway
,
190 /* Test zebra client main routine. */
192 main (int argc
, char **argv
)
199 /* Establish connection to zebra. */
200 zclient
= zclient_new ();
202 #ifdef HAVE_TCP_ZEBRA
203 zclient
->sock
= zclient_socket ();
205 zclient
->sock
= zclient_socket_un (ZEBRA_SERV_PATH
);
206 #endif /* HAVE_TCP_ZEBRA */
208 /* Open simulation file. */
209 fp
= fopen (argv
[1], "r");
212 fprintf (stderr
, "can't open %s\n", argv
[1]);