summaryrefslogtreecommitdiff
path: root/pimd/pim_addr.h
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_addr.h')
-rw-r--r--pimd/pim_addr.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/pimd/pim_addr.h b/pimd/pim_addr.h
index e422a2e2da..90862520af 100644
--- a/pimd/pim_addr.h
+++ b/pimd/pim_addr.h
@@ -31,9 +31,13 @@ typedef struct in_addr pim_addr;
#define PIM_ADDRSTRLEN INET_ADDRSTRLEN
#define PIM_AF AF_INET
#define PIM_AFI AFI_IP
+#define PIM_IPADDR IPADDR_V4
+#define ipaddr_pim ipaddr_v4
#define PIM_MAX_BITLEN IPV4_MAX_BITLEN
#define PIM_AF_NAME "ip"
+#define PIM_ADDR_FUNCNAME(name) ipv4_##name
+
union pimprefixptr {
prefixtype(pimprefixptr, struct prefix, p)
prefixtype(pimprefixptr, struct prefix_ipv4, p4)
@@ -50,9 +54,13 @@ typedef struct in6_addr pim_addr;
#define PIM_ADDRSTRLEN INET6_ADDRSTRLEN
#define PIM_AF AF_INET6
#define PIM_AFI AFI_IP6
+#define PIM_IPADDR IPADDR_V6
+#define ipaddr_pim ipaddr_v6
#define PIM_MAX_BITLEN IPV6_MAX_BITLEN
#define PIM_AF_NAME "ipv6"
+#define PIM_ADDR_FUNCNAME(name) ipv6_##name
+
union pimprefixptr {
prefixtype(pimprefixptr, struct prefix, p)
prefixtype(pimprefixptr, struct prefix_ipv6, p6)
@@ -101,6 +109,21 @@ static inline pim_addr pim_addr_from_prefix(union pimprefixconstptr in)
return ret;
}
+static inline uint8_t pim_addr_scope(const pim_addr addr)
+{
+ return PIM_ADDR_FUNCNAME(mcast_scope)(&addr);
+}
+
+static inline bool pim_addr_nofwd(const pim_addr addr)
+{
+ return PIM_ADDR_FUNCNAME(mcast_nofwd)(&addr);
+}
+
+static inline bool pim_addr_ssm(const pim_addr addr)
+{
+ return PIM_ADDR_FUNCNAME(mcast_ssm)(&addr);
+}
+
/* don't use this struct directly, use the pim_sgaddr typedef */
struct _pim_sgaddr {
pim_addr grp;