diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/.gitignore | 1 | ||||
| -rw-r--r-- | lib/agentx.c | 5 | ||||
| -rw-r--r-- | lib/command.c | 27 | ||||
| -rw-r--r-- | lib/if.c | 4 | ||||
| -rw-r--r-- | lib/if.h | 9 | ||||
| -rw-r--r-- | lib/log.c | 16 | ||||
| -rw-r--r-- | lib/log.h | 2 | ||||
| -rw-r--r-- | lib/prefix.c | 37 | ||||
| -rwxr-xr-x | lib/route_types.pl | 39 | ||||
| -rw-r--r-- | lib/route_types.txt | 8 | ||||
| -rw-r--r-- | lib/routemap.c | 6 | ||||
| -rw-r--r-- | lib/smux.c | 2 | ||||
| -rw-r--r-- | lib/version.h.in | 26 | ||||
| -rw-r--r-- | lib/vty.c | 2 | ||||
| -rw-r--r-- | lib/zclient.h | 2 | ||||
| -rw-r--r-- | lib/zebra.h | 7 |
16 files changed, 100 insertions, 93 deletions
diff --git a/lib/.gitignore b/lib/.gitignore index f34801eac4..10b8704ab2 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -21,3 +21,4 @@ command_lex.h command_parse.c command_parse.h refix +grammar_sandbox diff --git a/lib/agentx.c b/lib/agentx.c index 5996b34a0f..4175e7ba92 100644 --- a/lib/agentx.c +++ b/lib/agentx.c @@ -31,6 +31,7 @@ #include "smux.h" #include "memory.h" #include "linklist.h" +#include "version.h" static int agentx_enabled = 0; @@ -175,7 +176,7 @@ DEFUN (agentx_enable, { if (!agentx_enabled) { - init_snmp("quagga"); + init_snmp(FRR_SMUX_NAME); events = list_new(); agentx_events_update (); agentx_enabled = 1; @@ -209,7 +210,7 @@ smux_init (struct thread_master *tm) SNMP_CALLBACK_LOGGING, agentx_log_callback, NULL); - init_agent ("quagga"); + init_agent (FRR_SMUX_NAME); install_node (&agentx_node, config_write_agentx); install_element (CONFIG_NODE, &agentx_enable_cmd); diff --git a/lib/command.c b/lib/command.c index 3cce4584e9..6294e994e7 100644 --- a/lib/command.c +++ b/lib/command.c @@ -85,12 +85,7 @@ static struct cmd_node config_node = }; /* Default motd string. */ -static const char *default_motd = -"\r\n\ -Hello, this is " QUAGGA_PROGNAME " (version " QUAGGA_VERSION ").\r\n\ -" QUAGGA_COPYRIGHT "\r\n\ -" GIT_INFO "\r\n"; - +static const char *default_motd = FRR_DEFAULT_MOTD; static const struct facility_map { int facility; @@ -159,9 +154,9 @@ level_match(const char *s) void print_version (const char *progname) { - printf ("%s version %s\n", progname, QUAGGA_VERSION); - printf ("%s\n", QUAGGA_COPYRIGHT); - printf ("configured with:\n\t%s\n", QUAGGA_CONFIG_ARGS); + printf ("%s version %s\n", progname, FRR_VERSION); + printf ("%s\n", FRR_COPYRIGHT); + printf ("configured with:\n\t%s\n", FRR_CONFIG_ARGS); } @@ -1216,11 +1211,12 @@ DEFUN (show_version, SHOW_STR "Displays zebra version\n") { - vty_out (vty, "Quagga %s (%s).%s", QUAGGA_VERSION, host.name?host.name:"", - VTY_NEWLINE); - vty_out (vty, "%s%s%s", QUAGGA_COPYRIGHT, GIT_INFO, VTY_NEWLINE); + vty_out (vty, "%s %s (%s).%s", FRR_FULL_NAME, FRR_VERSION, + host.name ? host.name : "", + VTY_NEWLINE); + vty_out (vty, "%s%s%s", FRR_COPYRIGHT, GIT_INFO, VTY_NEWLINE); vty_out (vty, "configured with:%s %s%s", VTY_NEWLINE, - QUAGGA_CONFIG_ARGS, VTY_NEWLINE); + FRR_CONFIG_ARGS, VTY_NEWLINE); return CMD_SUCCESS; } @@ -2303,7 +2299,7 @@ install_default (enum node_type node) * * terminal = 0 -- vtysh / no logging, no config control * terminal = 1 -- normal daemon - * terminal = -1 -- watchquagga / no logging, but minimal config control */ + * terminal = -1 -- watchfrr / no logging, but minimal config control */ void cmd_init (int terminal) { @@ -2407,12 +2403,13 @@ cmd_init (int terminal) struct cmd_token * new_cmd_token (enum cmd_token_type type, u_char attr, char *text, char *desc) { - struct cmd_token *token = XMALLOC (MTYPE_CMD_TOKENS, sizeof (struct cmd_token)); + struct cmd_token *token = XCALLOC (MTYPE_CMD_TOKENS, sizeof (struct cmd_token)); token->type = type; token->attr = attr; token->text = text; token->desc = desc; token->arg = NULL; + token->allowrepeat = false; return token; } @@ -1302,7 +1302,7 @@ if_link_params_get (struct interface *ifp) sizeof (struct if_link_params)); if (iflp == NULL) return NULL; - /* Set TE metric == standard metric */ + /* Set TE metric equal to standard metric */ iflp->te_metric = ifp->metric; /* Compute default bandwidth based on interface */ @@ -1316,7 +1316,7 @@ if_link_params_get (struct interface *ifp) iflp->unrsv_bw[i] = iflp->default_bw; /* Update Link parameters status */ - iflp->lp_status = LP_TE | LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW; + iflp->lp_status = LP_TE_METRIC | LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW; /* Finally attach newly created Link Parameters */ ifp->link_params = iflp; @@ -146,9 +146,13 @@ struct if_stats #define MAX_CLASS_TYPE 8 #define MAX_PKT_LOSS 50.331642 -/* Link Parameters Status: 0: unset, 1: set, */ +/* + * Link Parameters Status: + * equal to 0: unset + * different from 0: set + */ #define LP_UNSET 0x0000 -#define LP_TE 0x0001 +#define LP_TE_METRIC 0x0001 #define LP_MAX_BW 0x0002 #define LP_MAX_RSV_BW 0x0004 #define LP_UNRSV_BW 0x0008 @@ -161,7 +165,6 @@ struct if_stats #define LP_RES_BW 0x0400 #define LP_AVA_BW 0x0800 #define LP_USE_BW 0x1000 -#define LP_TE_METRIC 0x2000 #define IS_PARAM_UNSET(lp, st) !(lp->lp_status & st) #define IS_PARAM_SET(lp, st) (lp->lp_status & st) @@ -20,7 +20,7 @@ * 02111-1307, USA. */ -#define QUAGGA_DEFINE_DESC_TABLE +#define FRR_DEFINE_DESC_TABLE #include <zebra.h> @@ -59,7 +59,7 @@ const char *zlog_proto_names[] = "ISIS", "PIM", "RFP", - "WATCHQUAGGA", + "WATCHFRR", NULL, }; @@ -1077,10 +1077,10 @@ proto_redistnum(int afi, const char *s) return ZEBRA_ROUTE_BGP; else if (strncmp (s, "ta", 2) == 0) return ZEBRA_ROUTE_TABLE; - else if (strncmp (s, "v", 1) == 0) - return ZEBRA_ROUTE_VNC; - else if (strncmp (s, "vd", 1) == 0) + else if (strcmp (s, "vnc-direct") == 0) return ZEBRA_ROUTE_VNC_DIRECT; + else if (strcmp (s, "vnc") == 0) + return ZEBRA_ROUTE_VNC; } if (afi == AFI_IP6) { @@ -1100,10 +1100,10 @@ proto_redistnum(int afi, const char *s) return ZEBRA_ROUTE_BGP; else if (strncmp (s, "ta", 2) == 0) return ZEBRA_ROUTE_TABLE; - else if (strncmp (s, "v", 1) == 0) - return ZEBRA_ROUTE_VNC; - else if (strncmp (s, "vd", 1) == 0) + else if (strcmp (s, "vnc-direct") == 0) return ZEBRA_ROUTE_VNC_DIRECT; + else if (strcmp (s, "vnc") == 0) + return ZEBRA_ROUTE_VNC; } return -1; } @@ -59,7 +59,7 @@ typedef enum ZLOG_ISIS, ZLOG_PIM, ZLOG_RFP, - ZLOG_WATCHQUAGGA, + ZLOG_WATCHFRR, } zlog_proto_t; /* If maxlvl is set to ZLOG_DISABLED, then no messages will be sent diff --git a/lib/prefix.c b/lib/prefix.c index 112dae5822..84a04c5300 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -665,7 +665,7 @@ str2prefix_ipv6 (const char *str, struct prefix_ipv6 *p) strncpy (cp, str, pnt - str); *(cp + (pnt - str)) = '\0'; ret = inet_pton (AF_INET6, cp, &p->prefix); - free (cp); + XFREE (MTYPE_TMP, cp); if (ret == 0) return 0; plen = (u_char) atoi (++pnt); @@ -893,29 +893,22 @@ const char * prefix2str (union prefix46constptr pu, char *str, int size) { const struct prefix *p = pu.p; - char buf[PREFIX2STR_BUFFER]; - - if (p->family == AF_ETHERNET) { - int i; - char *s = str; - - assert(size > (3*ETHER_ADDR_LEN) + 1 /* slash */ + 3 /* plen */ ); - for (i = 0; i < ETHER_ADDR_LEN; ++i) { - sprintf(s, "%02x", p->u.prefix_eth.octet[i]); - if (i < (ETHER_ADDR_LEN - 1)) { - *(s+2) = ':'; - s += 3; - } else { - s += 2; - } + + if (p->family == AF_ETHERNET) + { + snprintf(str, size, "%02x:%02x:%02x:%02x:%02x:%02x/%d", + p->u.prefix_eth.octet[0], p->u.prefix_eth.octet[1], + p->u.prefix_eth.octet[2], p->u.prefix_eth.octet[3], + p->u.prefix_eth.octet[4], p->u.prefix_eth.octet[5], + p->prefixlen); + } + else + { + char buf[PREFIX2STR_BUFFER]; + inet_ntop(p->family, &p->u.prefix, buf, sizeof(buf)); + snprintf(str, size, "%s/%d", buf, p->prefixlen); } - sprintf(s, "/%d", p->prefixlen); - return 0; - } - snprintf (str, size, "%s/%d", - inet_ntop (p->family, &p->u.prefix, buf, PREFIX2STR_BUFFER), - p->prefixlen); return str; } diff --git a/lib/route_types.pl b/lib/route_types.pl index d44cb12b23..62c7417b84 100755 --- a/lib/route_types.pl +++ b/lib/route_types.pl @@ -56,7 +56,7 @@ while (<STDIN>) { # else: 7-field line my @f = split(/,/, $_); - unless (@f == 7) { + unless (@f == 7 || @f == 8) { die "invalid input on route_types line $.\n"; } @@ -73,6 +73,7 @@ while (<STDIN>) { "ipv4" => int($f[4]), "ipv6" => int($f[5]), "shorthelp" => $f[6], + "restrict2" => $f[7], }; push @protos, $proto; $daemons{$f[2]} = { @@ -86,8 +87,8 @@ printf <<EOF, $ARGV[0]; /* Auto-generated from route_types.txt by %s. */ /* Do not edit! */ -#ifndef _QUAGGA_ROUTE_TYPES_H -#define _QUAGGA_ROUTE_TYPES_H +#ifndef _FRR_ROUTE_TYPES_H +#define _FRR_ROUTE_TYPES_H /* Zebra route's' types. */ EOF @@ -137,6 +138,8 @@ sub collect { my (@names, @help) = ((), ()); for my $p (@protos) { next if ($protodetail{$p}->{"daemon"} eq $daemon && $daemon ne "zebra"); + next if ($protodetail{$p}->{"restrict2"} ne "" && + $protodetail{$p}->{"restrict2"} ne $daemon); next unless (($ipv4 && $protodetail{$p}->{"ipv4"}) || ($ipv6 && $protodetail{$p}->{"ipv6"})); push @names, $protodetail{$p}->{"cname"}; @@ -154,38 +157,38 @@ for my $daemon (sort keys %daemons) { printf "/* %s */\n", $daemon; if ($daemons{$daemon}->{"ipv4"} && $daemons{$daemon}->{"ipv6"}) { my ($names, $help) = collect($daemon, 1, 1, 0); - printf "#define QUAGGA_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; ($names, $help) = collect($daemon, 1, 0, 0); - printf "#define QUAGGA_IP_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_IP_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_IP_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_IP_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; ($names, $help) = collect($daemon, 0, 1, 0); - printf "#define QUAGGA_IP6_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_IP6_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_IP6_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_IP6_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; if ($daemon eq "zebra") { ($names, $help) = collect($daemon, 1, 0, 1); - printf "#define QUAGGA_IP_PROTOCOL_MAP_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_IP_PROTOCOL_MAP_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_IP_PROTOCOL_MAP_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_IP_PROTOCOL_MAP_HELP_STR_%s \\\n%s\n", uc $daemon, $help; ($names, $help) = collect($daemon, 0, 1, 1); - printf "#define QUAGGA_IP6_PROTOCOL_MAP_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_IP6_PROTOCOL_MAP_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_IP6_PROTOCOL_MAP_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_IP6_PROTOCOL_MAP_HELP_STR_%s \\\n%s\n", uc $daemon, $help; } } else { my ($names, $help) = collect($daemon, $daemons{$daemon}->{"ipv4"}, $daemons{$daemon}->{"ipv6"}, 0); - printf "#define QUAGGA_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; - printf "#define QUAGGA_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; + printf "#define FRR_REDIST_STR_%s \\\n %s\n", uc $daemon, $names; + printf "#define FRR_REDIST_HELP_STR_%s \\\n%s\n", uc $daemon, $help; } print "\n"; } print <<EOF; -#ifdef QUAGGA_DEFINE_DESC_TABLE +#ifdef FRR_DEFINE_DESC_TABLE struct zebra_desc_table { @@ -208,8 +211,8 @@ print <<EOF; }; #undef DESC_ENTRY -#endif /* QUAGGA_DEFINE_DESC_TABLE */ +#endif /* FRR_DEFINE_DESC_TABLE */ -#endif /* _QUAGGA_ROUTE_TYPES_H */ +#endif /* _FRR_ROUTE_TYPES_H */ EOF diff --git a/lib/route_types.txt b/lib/route_types.txt index 56e8c14567..74d4f2a49c 100644 --- a/lib/route_types.txt +++ b/lib/route_types.txt @@ -64,9 +64,9 @@ ZEBRA_ROUTE_LDP, ldp, ldpd, 'L', 0, 0, "LDP" #vnc when sent to zebra ZEBRA_ROUTE_VNC, vnc, NULL, 'v', 1, 1, "VNC" # vnc when sent to bgp -ZEBRA_ROUTE_VNC_DIRECT, vpn, NULL, 'V', 1, 1, "VPN" -# vnc when sent to bgp (remote next hop?) -ZEBRA_ROUTE_VNC_DIRECT_RH, vpn-rh, NULL, 'V', 0, 0, "VPN" +ZEBRA_ROUTE_VNC_DIRECT, vnc-direct,NULL, 'V', 1, 1, "VNC-Direct", bgpd +# vnc when sent to bgp (resolve NVE mode) +ZEBRA_ROUTE_VNC_DIRECT_RH, vnc-rn, NULL, 'V', 0, 0, "VNC-RN" # bgp unicast -> vnc ZEBRA_ROUTE_BGP_DIRECT, bgp-direct, NULL, 'b', 0, 0, "BGP-Direct" # bgp unicast -> vnc @@ -90,4 +90,4 @@ ZEBRA_ROUTE_VNC, "Virtual Network Control (VNC)" ZEBRA_ROUTE_OLSR, "Optimised Link State Routing (OLSR)" ZEBRA_ROUTE_TABLE, "Non-main Kernel Routing Table" ZEBRA_ROUTE_LDP, "Label Distribution Protocol (LDP)" -ZEBRA_ROUTE_VNC_DIRECT, "VPN routes(VPN)" +ZEBRA_ROUTE_VNC_DIRECT, "VNC direct (not via zebra) routes" diff --git a/lib/routemap.c b/lib/routemap.c index ce84942545..74bae1fd76 100644 --- a/lib/routemap.c +++ b/lib/routemap.c @@ -2941,9 +2941,13 @@ route_map_finish (void) } for (i = 1; i < ROUTE_MAP_DEP_MAX; i++) - hash_free(route_map_dep_hash[i]); + { + hash_free(route_map_dep_hash[i]); + route_map_dep_hash[i] = NULL; + } hash_free (route_map_master_hash); + route_map_master_hash = NULL; } /* Initialization of route map vector. */ diff --git a/lib/smux.c b/lib/smux.c index 82bf64f1c8..bf38926376 100644 --- a/lib/smux.c +++ b/lib/smux.c @@ -922,7 +922,7 @@ smux_open (int sock) u_char *ptr; size_t len; long version; - const char progname[] = QUAGGA_PROGNAME "-" QUAGGA_VERSION; + const char progname[] = FRR_SMUX_NAME "-" FRR_VERSION; if (debug_smux) { diff --git a/lib/version.h.in b/lib/version.h.in index 1f95f0c5f0..adc8278189 100644 --- a/lib/version.h.in +++ b/lib/version.h.in @@ -35,17 +35,21 @@ #define GIT_INFO "" #endif -#define QUAGGA_PROGNAME "@PACKAGE_NAME@" - -#define QUAGGA_VERSION "@PACKAGE_VERSION@" GIT_SUFFIX - -#define ZEBRA_BUG_ADDRESS "@PACKAGE_BUGREPORT@" - -#define QUAGGA_URL "http://www.quagga.net" - -#define QUAGGA_COPYRIGHT "Copyright 1996-2005 Kunihiro Ishiguro, et al." - -#define QUAGGA_CONFIG_ARGS "@CONFIG_ARGS@" +#define FRR_PAM_NAME "@PACKAGE_NAME@" +#define FRR_SMUX_NAME "@PACKAGE_NAME@" +#define FRR_PTM_NAME "@PACKAGE_NAME@" + +#define FRR_FULL_NAME "FreeRangeRouting" +#define FRR_VERSION "@PACKAGE_VERSION@" GIT_SUFFIX +#define FRR_BUG_ADDRESS "@PACKAGE_BUGREPORT@" +#define FRR_COPYRIGHT "Copyright 1996-2005 Kunihiro Ishiguro, et al." +#define FRR_CONFIG_ARGS "@CONFIG_ARGS@" + +#define FRR_DEFAULT_MOTD \ + "\r\n" \ + "Hello, this is " FRR_FULL_NAME " (version " FRR_VERSION ").\r\n" \ + FRR_COPYRIGHT "\r\n" \ + GIT_INFO "\r\n" pid_t pid_output (const char *); @@ -2246,7 +2246,7 @@ vtysh_read (struct thread *thread) if (ret == CMD_SUSPEND) break; - /* warning: watchquagga hardcodes this result write */ + /* warning: watchfrr hardcodes this result write */ header[3] = ret; buffer_put(vty->obuf, header, 4); diff --git a/lib/zclient.h b/lib/zclient.h index 7ea5bc963a..4312cdc83c 100644 --- a/lib/zclient.h +++ b/lib/zclient.h @@ -123,7 +123,7 @@ struct zserv_header * always set to 255 in new zserv. */ uint8_t version; -#define ZSERV_VERSION 3 +#define ZSERV_VERSION 4 vrf_id_t vrf_id; uint16_t command; }; diff --git a/lib/zebra.h b/lib/zebra.h index 5bb3590abd..3a9ad15bf4 100644 --- a/lib/zebra.h +++ b/lib/zebra.h @@ -411,7 +411,7 @@ typedef enum { * the command value in the old zserv header. To allow old and new * Zserv headers to be distinguished from each other. */ -#define ZEBRA_HEADER_MARKER 255 +#define ZEBRA_HEADER_MARKER 254 /* Zebra route's types are defined in route_types.h */ #include "route_types.h" @@ -471,9 +471,10 @@ typedef enum { /* Subsequent Address Family Identifier. */ #define SAFI_UNICAST 1 #define SAFI_MULTICAST 2 -#define SAFI_RESERVED_3 3 -#define SAFI_MPLS_VPN 4 +#define SAFI_MPLS_VPN 3 +#define SAFI_RESERVED_4 4 #define SAFI_ENCAP 7 /* per IANA */ +#define SAFI_RESERVED_5 5 #define SAFI_MAX 8 /* Default Administrative Distance of each protocol. */ |
