summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/.gitignore1
-rw-r--r--lib/agentx.c5
-rw-r--r--lib/command.c27
-rw-r--r--lib/if.c4
-rw-r--r--lib/if.h9
-rw-r--r--lib/log.c16
-rw-r--r--lib/log.h2
-rw-r--r--lib/prefix.c37
-rwxr-xr-xlib/route_types.pl39
-rw-r--r--lib/route_types.txt8
-rw-r--r--lib/routemap.c6
-rw-r--r--lib/smux.c2
-rw-r--r--lib/version.h.in26
-rw-r--r--lib/vty.c2
-rw-r--r--lib/zclient.h2
-rw-r--r--lib/zebra.h7
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;
}
diff --git a/lib/if.c b/lib/if.c
index fb12f201b2..0a1a8f6a26 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -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;
diff --git a/lib/if.h b/lib/if.h
index e8a3b9d7b5..cfa376d1ea 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -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)
diff --git a/lib/log.c b/lib/log.c
index f9877300b4..6a3ce07799 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -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;
}
diff --git a/lib/log.h b/lib/log.h
index b36e5fbc80..3413cae5a9 100644
--- a/lib/log.h
+++ b/lib/log.h
@@ -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 *);
diff --git a/lib/vty.c b/lib/vty.c
index d5ecb1db5b..1fe2e5d296 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -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. */