summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/command.c2
-rw-r--r--lib/command.h1
-rw-r--r--lib/log.c1
-rw-r--r--lib/log.h1
-rw-r--r--lib/memory.c11
-rw-r--r--lib/memtypes.c16
-rw-r--r--lib/route_types.txt2
-rw-r--r--lib/thread.h1
-rw-r--r--lib/vty.c2
-rw-r--r--lib/zclient.c7
-rw-r--r--lib/zclient.h1
11 files changed, 43 insertions, 2 deletions
diff --git a/lib/command.c b/lib/command.c
index 4e8e24f491..a71cb5ddd2 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -2943,6 +2943,7 @@ DEFUN (config_exit,
case KEYCHAIN_NODE:
case MASC_NODE:
case RMAP_NODE:
+ case PIM_NODE:
case VTY_NODE:
vty->node = CONFIG_NODE;
break;
@@ -3000,6 +3001,7 @@ DEFUN (config_end,
case KEYCHAIN_NODE:
case KEYCHAIN_KEY_NODE:
case MASC_NODE:
+ case PIM_NODE:
case VTY_NODE:
vty_config_unlock (vty);
vty->node = ENABLE_NODE;
diff --git a/lib/command.h b/lib/command.h
index 20bdb38a96..7051e1ca5c 100644
--- a/lib/command.h
+++ b/lib/command.h
@@ -89,6 +89,7 @@ enum node_type
OSPF_NODE, /* OSPF protocol mode */
OSPF6_NODE, /* OSPF protocol for IPv6 mode */
ISIS_NODE, /* ISIS protocol mode */
+ PIM_NODE, /* PIM protocol mode */
MASC_NODE, /* MASC for multicast. */
IRDP_NODE, /* ICMP Router Discovery Protocol mode. */
IP_NODE, /* Static ip route node. */
diff --git a/lib/log.c b/lib/log.c
index a8577bf9a4..5d673e2166 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -50,6 +50,7 @@ const char *zlog_proto_names[] =
"RIPNG",
"OSPF6",
"ISIS",
+ "PIM",
"MASC",
NULL,
};
diff --git a/lib/log.h b/lib/log.h
index e09d747ee2..f22be2318f 100644
--- a/lib/log.h
+++ b/lib/log.h
@@ -52,6 +52,7 @@ typedef enum
ZLOG_RIPNG,
ZLOG_OSPF6,
ZLOG_ISIS,
+ ZLOG_PIM,
ZLOG_MASC
} zlog_proto_t;
diff --git a/lib/memory.c b/lib/memory.c
index 172ddfc49c..93ff702ca0 100644
--- a/lib/memory.c
+++ b/lib/memory.c
@@ -416,6 +416,17 @@ DEFUN (show_memory,
}
+DEFUN (show_memory_pim,
+ show_memory_pim_cmd,
+ "show memory pim",
+ SHOW_STR
+ "Memory statistics\n"
+ "PIM memory\n")
+{
+ show_memory_vty (vty, memory_list_pim);
+ return CMD_SUCCESS;
+}
+
void
memory_init (void)
{
diff --git a/lib/memtypes.c b/lib/memtypes.c
index d77ba0e97a..65f32a8495 100644
--- a/lib/memtypes.c
+++ b/lib/memtypes.c
@@ -271,6 +271,21 @@ struct memory_list memory_list_isis[] =
{ -1, NULL },
};
+struct memory_list memory_list_pim[] =
+{
+ { MTYPE_PIM_CHANNEL_OIL, "PIM SSM (S,G) channel OIL" },
+ { MTYPE_PIM_INTERFACE, "PIM interface" },
+ { MTYPE_PIM_IGMP_JOIN, "PIM interface IGMP static join" },
+ { MTYPE_PIM_IGMP_SOCKET, "PIM interface IGMP socket" },
+ { MTYPE_PIM_IGMP_GROUP, "PIM interface IGMP group" },
+ { MTYPE_PIM_IGMP_GROUP_SOURCE, "PIM interface IGMP source" },
+ { MTYPE_PIM_NEIGHBOR, "PIM interface neighbor" },
+ { MTYPE_PIM_IFCHANNEL, "PIM interface (S,G) state" },
+ { MTYPE_PIM_UPSTREAM, "PIM upstream (S,G) state" },
+ { MTYPE_PIM_SSMPINGD, "PIM sspimgd socket" },
+ { -1, NULL },
+};
+
struct memory_list memory_list_vtysh[] =
{
{ MTYPE_VTYSH_CONFIG, "Vtysh configuration", },
@@ -287,5 +302,6 @@ struct mlist mlists[] __attribute__ ((unused)) = {
{ memory_list_ospf6, "OSPF6" },
{ memory_list_isis, "ISIS" },
{ memory_list_bgp, "BGP" },
+ { memory_list_pim, "PIM" },
{ NULL, NULL},
};
diff --git a/lib/route_types.txt b/lib/route_types.txt
index 605d4b1346..8fc3092cac 100644
--- a/lib/route_types.txt
+++ b/lib/route_types.txt
@@ -51,6 +51,7 @@ ZEBRA_ROUTE_OSPF, ospf, ospfd, 'O', 1, 0, "OSPF"
ZEBRA_ROUTE_OSPF6, ospf6, ospf6d, 'O', 0, 1, "OSPFv6"
ZEBRA_ROUTE_ISIS, isis, isisd, 'I', 1, 1, "IS-IS"
ZEBRA_ROUTE_BGP, bgp, bgpd, 'B', 1, 1, "BGP"
+ZEBRA_ROUTE_PIM, pim, pimd, 'P', 1, 0, "PIM"
# HSLS and OLSR both are AFI independent (so: 1, 1), however
# we want to disable for them for general Quagga distribution.
# This at least makes it trivial for users of these protocols
@@ -71,6 +72,7 @@ ZEBRA_ROUTE_OSPF, "Open Shortest Path First (OSPFv2)"
ZEBRA_ROUTE_OSPF6, "Open Shortest Path First (IPv6) (OSPFv3)"
ZEBRA_ROUTE_ISIS, "Intermediate System to Intermediate System (IS-IS)"
ZEBRA_ROUTE_BGP, "Border Gateway Protocol (BGP)"
+ZEBRA_ROUTE_PIM, "Protocol Independent Multicast (PIM)"
ZEBRA_ROUTE_HSLS, "Hazy-Sighted Link State Protocol (HSLS)"
ZEBRA_ROUTE_OLSR, "Optimised Link State Routing (OLSR)"
ZEBRA_ROUTE_TABLE, "Non-main Kernel Routing Table"
diff --git a/lib/thread.h b/lib/thread.h
index 4ca1e3ce04..853ef3fb78 100644
--- a/lib/thread.h
+++ b/lib/thread.h
@@ -1,6 +1,5 @@
/* Thread management routine header.
* Copyright (C) 1998 Kunihiro Ishiguro
- * Portions Copyright (c) 2008 Everton da Silva Marques <everton.marques@gmail.com>
*
* This file is part of GNU Zebra.
*
diff --git a/lib/vty.c b/lib/vty.c
index 105d559279..146a20fb0f 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -714,6 +714,7 @@ vty_end_config (struct vty *vty)
case KEYCHAIN_NODE:
case KEYCHAIN_KEY_NODE:
case MASC_NODE:
+ case PIM_NODE:
case VTY_NODE:
vty_config_unlock (vty);
vty->node = ENABLE_NODE;
@@ -1117,6 +1118,7 @@ vty_stop_input (struct vty *vty)
case KEYCHAIN_NODE:
case KEYCHAIN_KEY_NODE:
case MASC_NODE:
+ case PIM_NODE:
case VTY_NODE:
vty_config_unlock (vty);
vty->node = ENABLE_NODE;
diff --git a/lib/zclient.c b/lib/zclient.c
index d86b576c1b..0cb3c63db6 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -260,7 +260,7 @@ zclient_socket_connect (struct zclient *zclient)
#ifdef HAVE_TCP_ZEBRA
zclient->sock = zclient_socket ();
#else
- zclient->sock = zclient_socket_un (zclient_serv_path ? zclient_serv_path : ZEBRA_SERV_PATH);
+ zclient->sock = zclient_socket_un (zclient_serv_path_get());
#endif
return zclient->sock;
}
@@ -1582,6 +1582,11 @@ zclient_event (enum event event, struct zclient *zclient)
}
}
+const char *const zclient_serv_path_get()
+{
+ return zclient_serv_path ? zclient_serv_path : ZEBRA_SERV_PATH;
+}
+
void
zclient_serv_path_set (char *path)
{
diff --git a/lib/zclient.h b/lib/zclient.h
index ad82a21f3f..39bc5d674e 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -167,6 +167,7 @@ extern void zclient_free (struct zclient *);
extern int zclient_socket_connect (struct zclient *);
extern void zclient_serv_path_set (char *path);
+extern const char *const zclient_serv_path_get (void);
extern int redist_check_instance (struct redist_proto *, u_short);
extern void redist_add_instance (struct redist_proto *, u_short);