Fix reporting of IPv6 multicast addresses.
[oss-qm-packages.git] / lib / getroute.c
blobf8225abf22a6cbcd4c98515dfbe4bc24c05a231d
1 /*
2 * lib/getroute.c This file contains a small interface function to
3 * use the AF specific print routine for the routing
4 * table.
6 * NET-LIB A collection of functions used from the base set of the
7 * NET-3 Networking Distribution for the LINUX operating
8 * system. (net-tools, net-drivers)
10 * Version: $Id: getroute.c,v 1.6 2000/05/20 13:38:10 pb Exp $
12 * Author: Bernd 'eckes' Eckenfels <net-tools@lina.inka.de>
13 * Copyright 1999 Bernd Eckenfels, Germany
15 * Modifications:
17 *951020 {0.10} Bernd Eckenfels: creation
18 *960202 {0.90} Bernd Eckenfels: rewrite to use getaftype.
19 *960204 {0.91} Bernd Eckenfels: takes constant list of AFs
20 *960206 {1.01} Bernd Eckenfels: route_init will enable routing
21 * support in the AF handlers
22 *960221 {1.02} Bernd Eckenfels: renamed from route_info to getroute.c
23 *960413 {1.03} Bernd Eckenfels: new RTACTION support
24 *980701 {1.04} Arnaldo C. Melo: GNU gettext instead of catgets
26 * This program is free software; you can redistribute it
27 * and/or modify it under the terms of the GNU General
28 * Public License as published by the Free Software
29 * Foundation; either version 2 of the License, or (at
30 * your option) any later version.
32 #include <stdio.h>
33 #include <string.h>
34 #include "net-support.h"
35 #include "pathnames.h"
36 #include "version.h"
37 #include "config.h"
38 #include "intl.h"
39 #include "util.h"
41 extern struct aftype unspec_aftype;
42 extern struct aftype unix_aftype;
43 extern struct aftype inet_aftype;
44 extern struct aftype inet6_aftype;
45 extern struct aftype ax25_aftype;
46 extern struct aftype netrom_aftype;
47 extern struct aftype ipx_aftype;
48 extern struct aftype ddp_aftype;
49 extern struct aftype x25_aftype;
51 void getroute_init(void)
53 #if HAVE_AFINET
54 inet_aftype.rprint = INET_rprint;
55 #endif
56 #if HAVE_AFINET6
57 inet6_aftype.rprint = INET6_rprint;
58 #endif
59 #if HAVE_AFNETROM
60 netrom_aftype.rprint = NETROM_rprint;
61 #endif
62 #if HAVE_AFAX25
63 ax25_aftype.rprint = AX25_rprint;
64 #endif
65 #if HAVE_AFIPX
66 ipx_aftype.rprint = IPX_rprint;
67 #endif
68 #if HAVE_AFATALK
69 ddp_aftype.rprint = DDP_rprint;
70 #endif
71 #if HAVE_AFX25
72 x25_aftype.rprint = X25_rprint;
73 #endif
76 int route_info(const char *afname, int options)
78 struct aftype *ap;
79 char *tmp1, *tmp2;
80 int found = E_NOTFOUND, rc;
81 char buf[256];
83 safe_strncpy(buf, afname, sizeof(buf));
85 tmp1 = buf;
87 while (tmp1) {
89 ap = NULL;
91 if ((tmp2 = index(tmp1, ',')))
92 *tmp2++ = '\0';
94 if (!tmp1[0]) {
95 tmp1 = tmp2;
96 continue;
98 ap = get_aftype(tmp1);
100 if (!ap) {
101 fprintf(stderr, _("Address family `%s' not supported.\n"), tmp1);
102 return (E_OPTERR);
104 tmp1 = tmp2;
106 if (!ap->rprint) {
107 fprintf(stderr, _("No routing for address family `%s'.\n"), ap->name);
108 return (E_OPTERR);
110 found = 0;
112 if ((rc = ap->rprint(options)))
113 return (rc);
116 return (found);