]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6_intra.h
*: remove THREAD_ON macros, add nullity check
[mirror_frr.git] / ospf6d / ospf6_intra.h
index 31643fd89dc90bd3564e6f7a1670549ef9075dce..9975bbd6272e0607a36fa45b817af471407a8b8e 100644 (file)
@@ -69,6 +69,7 @@ extern u_int32_t conf_debug_ospf6_brouter_specific_area_id;
    conf_debug_ospf6_brouter_specific_area_id == (area_id))
 
 /* Router-LSA */
+#define OSPF6_ROUTER_LSA_MIN_SIZE              4U
 struct ospf6_router_lsa
 {
   u_char bits;
@@ -77,6 +78,7 @@ struct ospf6_router_lsa
 };
 
 /* Link State Description in Router-LSA */
+#define OSPF6_ROUTER_LSDESC_FIX_SIZE          16U
 struct ospf6_router_lsdesc
 {
   u_char    type;
@@ -92,6 +94,13 @@ struct ospf6_router_lsdesc
 #define OSPF6_ROUTER_LSDESC_STUB_NETWORK       3
 #define OSPF6_ROUTER_LSDESC_VIRTUAL_LINK       4
 
+enum stub_router_mode
+  {
+    OSPF6_NOT_STUB_ROUTER,
+    OSPF6_IS_STUB_ROUTER,
+    OSPF6_IS_STUB_ROUTER_V6,
+  };
+
 #define ROUTER_LSDESC_IS_TYPE(t,x)                         \
   ((((struct ospf6_router_lsdesc *)(x))->type ==           \
    OSPF6_ROUTER_LSDESC_ ## t) ? 1 : 0)
@@ -105,6 +114,7 @@ struct ospf6_router_lsdesc
   (((struct ospf6_router_lsdesc *)(x))->neighbor_router_id)
 
 /* Network-LSA */
+#define OSPF6_NETWORK_LSA_MIN_SIZE             4U
 struct ospf6_network_lsa
 {
   u_char reserved;
@@ -113,6 +123,7 @@ struct ospf6_network_lsa
 };
 
 /* Link State Description in Router-LSA */
+#define OSPF6_NETWORK_LSDESC_FIX_SIZE          4U
 struct ospf6_network_lsdesc
 {
   u_int32_t router_id;
@@ -121,6 +132,7 @@ struct ospf6_network_lsdesc
   (((struct ospf6_network_lsdesc *)(x))->router_id)
 
 /* Link-LSA */
+#define OSPF6_LINK_LSA_MIN_SIZE               24U /* w/o 1st IPv6 prefix */
 struct ospf6_link_lsa
 {
   u_char          priority;
@@ -131,6 +143,7 @@ struct ospf6_link_lsa
 };
 
 /* Intra-Area-Prefix-LSA */
+#define OSPF6_INTRA_PREFIX_LSA_MIN_SIZE       12U /* w/o 1st IPv6 prefix */
 struct ospf6_intra_prefix_lsa
 {
   u_int16_t prefix_num;
@@ -140,38 +153,33 @@ struct ospf6_intra_prefix_lsa
   /* followed by ospf6 prefix(es) */
 };
 
-\f
+
 #define OSPF6_ROUTER_LSA_SCHEDULE(oa) \
   do { \
-    if (! (oa)->thread_router_lsa) \
-      (oa)->thread_router_lsa = \
-        thread_add_event (master, ospf6_router_lsa_originate, oa, 0); \
+    if (CHECK_FLAG((oa)->flag, OSPF6_AREA_ENABLE)) \
+      thread_add_event (master, ospf6_router_lsa_originate, oa, 0, &(oa)->thread_router_lsa); \
   } while (0)
 #define OSPF6_NETWORK_LSA_SCHEDULE(oi) \
   do { \
-    if (! (oi)->thread_network_lsa) \
-      (oi)->thread_network_lsa = \
-        thread_add_event (master, ospf6_network_lsa_originate, oi, 0); \
+    if (!CHECK_FLAG((oi)->flag, OSPF6_INTERFACE_DISABLE)) \
+      thread_add_event (master, ospf6_network_lsa_originate, oi, 0, &(oi)->thread_network_lsa); \
   } while (0)
 #define OSPF6_LINK_LSA_SCHEDULE(oi) \
   do { \
-    if (! (oi)->thread_link_lsa) \
-      (oi)->thread_link_lsa = \
-        thread_add_event (master, ospf6_link_lsa_originate, oi, 0); \
+    if (!CHECK_FLAG((oi)->flag, OSPF6_INTERFACE_DISABLE)) \
+      thread_add_event (master, ospf6_link_lsa_originate, oi, 0, &(oi)->thread_link_lsa); \
   } while (0)
 #define OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB(oa) \
   do { \
-    if (! (oa)->thread_intra_prefix_lsa) \
-      (oa)->thread_intra_prefix_lsa = \
-        thread_add_event (master, ospf6_intra_prefix_lsa_originate_stub, \
-                          oa, 0); \
+    if (CHECK_FLAG((oa)->flag, OSPF6_AREA_ENABLE)) \
+      thread_add_event (master, ospf6_intra_prefix_lsa_originate_stub, \
+                        oa, 0, &(oa)->thread_intra_prefix_lsa); \
   } while (0)
 #define OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT(oi) \
   do { \
-    if (! (oi)->thread_intra_prefix_lsa) \
-      (oi)->thread_intra_prefix_lsa = \
-        thread_add_event (master, ospf6_intra_prefix_lsa_originate_transit, \
-                          oi, 0); \
+    if (!CHECK_FLAG((oi)->flag, OSPF6_INTERFACE_DISABLE)) \
+      thread_add_event (master, ospf6_intra_prefix_lsa_originate_transit, \
+                        oi, 0, &(oi)->thread_intra_prefix_lsa); \
   } while (0)
 
 #define OSPF6_NETWORK_LSA_EXECUTE(oi) \
@@ -194,6 +202,7 @@ extern char *ospf6_router_lsdesc_lookup (u_char type, u_int32_t interface_id,
 extern char *ospf6_network_lsdesc_lookup (u_int32_t router_id,
                                           struct ospf6_lsa *lsa);
 
+extern int ospf6_router_is_stub_router (struct ospf6_lsa *lsa);
 extern int ospf6_router_lsa_originate (struct thread *);
 extern int ospf6_network_lsa_originate (struct thread *);
 extern int ospf6_link_lsa_originate (struct thread *);