]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospf6d: add DN bit in prefix options
authorckishimo <carles.kishimoto@gmail.com>
Tue, 23 Feb 2021 14:50:30 +0000 (15:50 +0100)
committerckishimo <carles.kishimoto@gmail.com>
Tue, 23 Feb 2021 17:04:27 +0000 (18:04 +0100)
According to RFC 5340 appendix A.4.1.1

     0  1  2  3  4  5  6  7
    +--+--+--+--+--+-+--+--+
    |  |  |  |DN| P|x|LA|NU|
    +--+--+--+--+--+-+--+--+

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
ospf6d/ospf6_proto.c
ospf6d/ospf6_proto.h

index a746037ec5b12ac27f3dbb9fa6b6af7a14b7fc6f..e60d2c7e0e9ee670c53e7e9f08ef87a92dd1ed2e 100644 (file)
@@ -60,21 +60,14 @@ void ospf6_prefix_apply_mask(struct ospf6_prefix *op)
 
 void ospf6_prefix_options_printbuf(uint8_t prefix_options, char *buf, int size)
 {
-       const char *p, *mc, *la, *nu;
+       const char *dn, *p, *mc, *la, *nu;
 
-       p = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_P)
-                    ? "P"
-                    : "--");
-       mc = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_MC)
-                     ? "MC"
-                     : "--");
-       la = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_LA)
-                     ? "LA"
-                     : "--");
-       nu = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_NU)
-                     ? "NU"
-                     : "--");
-       snprintf(buf, size, "%s|%s|%s|%s", p, mc, la, nu);
+       dn = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_DN) ? "DN" : "--");
+       p = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_P) ? "P" : "--");
+       mc = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_MC) ? "MC" : "--");
+       la = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_LA) ? "LA" : "--");
+       nu = (CHECK_FLAG(prefix_options, OSPF6_PREFIX_OPTION_NU) ? "NU" : "--");
+       snprintf(buf, size, "%s|%s|%s|%s|%s", dn, p, mc, la, nu);
 }
 
 void ospf6_capability_printbuf(char capability, char *buf, int size)
index 3876a98c50919c053f348516915f67b8a286ecd4..da6b270e0174581ba3b2ffed49f13812f0cd3b72 100644 (file)
@@ -69,6 +69,8 @@ struct ospf6_prefix {
 #define OSPF6_PREFIX_OPTION_LA (1 << 1)  /* Local Address */
 #define OSPF6_PREFIX_OPTION_MC (1 << 2)  /* MultiCast */
 #define OSPF6_PREFIX_OPTION_P  (1 << 3)  /* Propagate (NSSA) */
+#define OSPF6_PREFIX_OPTION_DN                                                 \
+       (1 << 4) /* DN bit to prevent loops in VPN environment */
 
 /* caddr_t OSPF6_PREFIX_BODY (struct ospf6_prefix *); */
 #define OSPF6_PREFIX_BODY(x) ((caddr_t)(x) + sizeof(struct ospf6_prefix))