getroute.c

来自「Linux下网络相关工具源代码。」· C语言 代码 · 共 114 行

C
114
字号
/* * lib/getroute.c     This file contains a small interface function to *                      use the AF specific print routine for the routing *                      table. * * NET-LIB      A collection of functions used from the base set of the *              NET-3 Networking Distribution for the LINUX operating *              system. (net-tools, net-drivers) * * Version:     $Id: getroute.c,v 1.5 1998/11/19 13:01:57 philip Exp $ * * Author:      Bernd 'eckes' Eckenfels <net-tools@lina.inka.de> *              Copyright 1999 Bernd Eckenfels, Germany * * Modifications: * *951020 {0.10} Bernd Eckenfels:        creation *960202 {0.90} Bernd Eckenfels:        rewrite to use getaftype. *960204 {0.91} Bernd Eckenfels:        takes constant list of AFs *960206 {1.01} Bernd Eckenfels:        route_init will enable routing *                                      support in the AF handlers *960221 {1.02} Bernd Eckenfels:        renamed from route_info to getroute.c *960413 {1.03} Bernd Eckenfels:        new RTACTION support *980701 {1.04} Arnaldo C. Melo:        GNU gettext instead of catgets * *              This program is free software; you can redistribute it *              and/or  modify it under  the terms of  the GNU General *              Public  License as  published  by  the  Free  Software *              Foundation;  either  version 2 of the License, or  (at *              your option) any later version. */#include <stdio.h>#include <string.h>#include "net-support.h"#include "pathnames.h"#include "version.h"#include "config.h"#include "intl.h"#include "util.h"extern struct aftype unspec_aftype;extern struct aftype unix_aftype;extern struct aftype inet_aftype;extern struct aftype inet6_aftype;extern struct aftype ax25_aftype;extern struct aftype netrom_aftype;extern struct aftype ipx_aftype;extern struct aftype ddp_aftype;void getroute_init(void){#if HAVE_AFINET    inet_aftype.rprint = INET_rprint;#endif#if HAVE_AFINET6    inet6_aftype.rprint = INET6_rprint;#endif#if HAVE_AFNETROM    netrom_aftype.rprint = NETROM_rprint;#endif#if HAVE_AFAX25    ax25_aftype.rprint = AX25_rprint;#endif#if HAVE_AFIPX    ipx_aftype.rprint = IPX_rprint;#endif#if HAVE_AFATALK    ddp_aftype.rprint = DDP_rprint;#endif}int route_info(const char *afname, int options){    struct aftype *ap;    char *tmp1, *tmp2;    int found = E_NOTFOUND, rc;    char buf[256];    safe_strncpy(buf, afname, sizeof(buf));    tmp1 = buf;    while (tmp1) {	ap = NULL;	if ((tmp2 = index(tmp1, ',')))	    *tmp2++ = '\0';	if (!tmp1[0]) {	    tmp1 = tmp2;	    continue;	}	ap = get_aftype(tmp1);	if (!ap) {	    fprintf(stderr, _("Address family `%s' not supported.\n"), tmp1);	    return (E_OPTERR);	}	tmp1 = tmp2;	if (!ap->rprint) {	    fprintf(stderr, _("No routing for address family `%s'.\n"), ap->name);	    return (E_OPTERR);	}	found = 0;	if ((rc = ap->rprint(options)))	    return (rc);    }    return (found);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?