xref: /openbsd-src/usr.sbin/ripd/printconf.c (revision 5fa7d4c4bb8be553b3325d2016e39ea5e49ba913)
1*5fa7d4c4Sdenis /*	$OpenBSD: printconf.c,v 1.8 2019/05/12 11:27:08 denis Exp $ */
2ddeeec14Snorby 
3ddeeec14Snorby /*
4ddeeec14Snorby  * Copyright (c) 2004, 2005, 2006 Esben Norby <norby@openbsd.org>
5ddeeec14Snorby  *
6ddeeec14Snorby  * Permission to use, copy, modify, and distribute this software for any
7ddeeec14Snorby  * purpose with or without fee is hereby granted, provided that the above
8ddeeec14Snorby  * copyright notice and this permission notice appear in all copies.
9ddeeec14Snorby  *
10ddeeec14Snorby  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11ddeeec14Snorby  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12ddeeec14Snorby  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13ddeeec14Snorby  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14ddeeec14Snorby  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15ddeeec14Snorby  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16ddeeec14Snorby  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17ddeeec14Snorby  */
18ddeeec14Snorby 
19ddeeec14Snorby #include <sys/queue.h>
20ddeeec14Snorby #include <sys/types.h>
21ddeeec14Snorby #include <sys/socket.h>
22ddeeec14Snorby #include <netinet/in.h>
23ddeeec14Snorby #include <arpa/inet.h>
24ddeeec14Snorby 
25ddeeec14Snorby #include <stdio.h>
26ddeeec14Snorby 
27ddeeec14Snorby #include "rip.h"
28ddeeec14Snorby #include "ripd.h"
29ddeeec14Snorby #include "ripe.h"
30ddeeec14Snorby 
31ddeeec14Snorby void	print_mainconf(struct ripd_conf *);
329bb9ec63Sclaudio const char *print_no(u_int16_t);
339bb9ec63Sclaudio void	print_redistribute(struct ripd_conf *);
34ddeeec14Snorby void	print_iface(struct iface *);
35ddeeec14Snorby 
36ddeeec14Snorby void
print_mainconf(struct ripd_conf * conf)37ddeeec14Snorby print_mainconf(struct ripd_conf *conf)
38ddeeec14Snorby {
39dc9768e9Sjoel 	if (conf->flags & RIPD_FLAG_NO_FIB_UPDATE)
40ddeeec14Snorby 		printf("fib-update no\n");
41dc9768e9Sjoel 	else
42dc9768e9Sjoel 		printf("fib-update yes\n");
43ddeeec14Snorby 
441acb5c27Sremi 	printf("fib-priority %hhu\n", conf->fib_priority);
451acb5c27Sremi 
469bb9ec63Sclaudio 	print_redistribute(conf);
47ddeeec14Snorby 
48ddeeec14Snorby 	if (conf->options & OPT_SPLIT_HORIZON)
4946802160Smichele 		printf("split-horizon simple\n");
50ddeeec14Snorby 	else if (conf->options & OPT_SPLIT_POISONED)
51ddeeec14Snorby 		printf("split-horizon poisoned\n");
52ddeeec14Snorby 	else
53ddeeec14Snorby 		printf("split-horizon none\n");
54ddeeec14Snorby 
55ddeeec14Snorby 	if (conf->options & OPT_TRIGGERED_UPDATES)
56ddeeec14Snorby 		printf("triggered-updates yes\n");
57ddeeec14Snorby 	else
58ddeeec14Snorby 		printf("triggered-updates no\n");
59ddeeec14Snorby }
60ddeeec14Snorby 
619bb9ec63Sclaudio const char *
print_no(u_int16_t type)629bb9ec63Sclaudio print_no(u_int16_t type)
639bb9ec63Sclaudio {
649bb9ec63Sclaudio 	if (type & REDIST_NO)
659bb9ec63Sclaudio 		return ("no ");
669bb9ec63Sclaudio 	else
679bb9ec63Sclaudio 		return ("");
689bb9ec63Sclaudio }
699bb9ec63Sclaudio 
709bb9ec63Sclaudio void
print_redistribute(struct ripd_conf * conf)719bb9ec63Sclaudio print_redistribute(struct ripd_conf *conf)
729bb9ec63Sclaudio {
739bb9ec63Sclaudio 	struct redistribute	*r;
749bb9ec63Sclaudio 
759bb9ec63Sclaudio 	SIMPLEQ_FOREACH(r, &conf->redist_list, entry) {
769bb9ec63Sclaudio 		switch (r->type & ~REDIST_NO) {
779bb9ec63Sclaudio 		case REDIST_STATIC:
789bb9ec63Sclaudio 			printf("%sredistribute static\n", print_no(r->type));
799bb9ec63Sclaudio 			break;
809bb9ec63Sclaudio 		case REDIST_CONNECTED:
819bb9ec63Sclaudio 			printf("%sredistribute connected\n", print_no(r->type));
829bb9ec63Sclaudio 			break;
839bb9ec63Sclaudio 		case REDIST_LABEL:
849bb9ec63Sclaudio 			printf("%sredistribute rtlabel %s\n",
859bb9ec63Sclaudio 			    print_no(r->type), rtlabel_id2name(r->label));
869bb9ec63Sclaudio 			break;
8739c227bcSmichele 		case REDIST_DEFAULT:
8839c227bcSmichele 			printf("redistribute default\n");
8939c227bcSmichele 			break;
909bb9ec63Sclaudio 		case REDIST_ADDR:
91*5fa7d4c4Sdenis 			printf("%sredistribute %s/%d\n",
929bb9ec63Sclaudio 			    print_no(r->type), inet_ntoa(r->addr),
939bb9ec63Sclaudio 			    mask2prefixlen(r->mask.s_addr));
949bb9ec63Sclaudio 			break;
959bb9ec63Sclaudio 		}
969bb9ec63Sclaudio 	}
979bb9ec63Sclaudio }
989bb9ec63Sclaudio 
99ddeeec14Snorby void
print_iface(struct iface * iface)100ddeeec14Snorby print_iface(struct iface *iface)
101ddeeec14Snorby {
1029adbf03bSclaudio 	struct auth_md	*m;
1039adbf03bSclaudio 
104ddeeec14Snorby 	printf("interface %s {\n", iface->name);
105ddeeec14Snorby 
106ddeeec14Snorby 	if (iface->passive)
107ddeeec14Snorby 		printf("\tpassive\n");
108ddeeec14Snorby 
109ddeeec14Snorby 	printf("\tcost %d\n", iface->cost);
110ddeeec14Snorby 
111ddeeec14Snorby 	printf("\tauth-type %s\n", if_auth_name(iface->auth_type));
112ddeeec14Snorby 	switch (iface->auth_type) {
113ddeeec14Snorby 	case AUTH_NONE:
114ddeeec14Snorby 		break;
115ddeeec14Snorby 	case AUTH_SIMPLE:
116ddeeec14Snorby 		printf("\tauth-key XXXXXX\n");
117ddeeec14Snorby 		break;
118ddeeec14Snorby 	case AUTH_CRYPT:
1199adbf03bSclaudio 		printf("\tauth-md-keyid %d\n", iface->auth_keyid);
1209adbf03bSclaudio 		TAILQ_FOREACH(m, &iface->auth_md_list, entry)
1219adbf03bSclaudio 			printf("\tauth-md %d XXXXXX\n", m->keyid);
122ddeeec14Snorby 		break;
123ddeeec14Snorby 	default:
124ddeeec14Snorby 		printf("\tunknown auth type!\n");
125ddeeec14Snorby 		break;
126ddeeec14Snorby 	}
127ddeeec14Snorby 
1289adbf03bSclaudio 	printf("}\n\n");
129ddeeec14Snorby }
130ddeeec14Snorby 
131ddeeec14Snorby void
print_config(struct ripd_conf * conf)132ddeeec14Snorby print_config(struct ripd_conf *conf)
133ddeeec14Snorby {
134ddeeec14Snorby 	struct iface	*iface;
135ddeeec14Snorby 
136ddeeec14Snorby 	print_mainconf(conf);
137ddeeec14Snorby 	printf("\n");
138ddeeec14Snorby 
139ddeeec14Snorby 	LIST_FOREACH(iface, &conf->iface_list, entry) {
140ddeeec14Snorby 		print_iface(iface);
141ddeeec14Snorby 	}
142ddeeec14Snorby }
143