Add "unreliable" l2 origin for DLEP defaults
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Fri, 10 Nov 2017 14:29:20 +0000 (15:29 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Fri, 10 Nov 2017 14:29:20 +0000 (15:29 +0100)
src-plugins/generic/dlep/dlep_interface.c
src-plugins/generic/dlep/dlep_interface.h
src-plugins/generic/dlep/dlep_session.c
src-plugins/generic/dlep/dlep_session.h
src-plugins/generic/dlep/radio/dlep_radio_interface.c
src-plugins/generic/dlep/radio/dlep_radio_session.c
src-plugins/generic/dlep/router/dlep_router_interface.c
src-plugins/generic/dlep/router/dlep_router_session.c

index 737840c..440d4f0 100644 (file)
@@ -75,6 +75,7 @@ dlep_if_get_tree(bool radio) {
  * @param interf pointer to interface
  * @param ifname name of interface
  * @param l2_origin layer2 originator that shall be used
+ * @param l2_default_origin layer2 originator that shall be used for setting defaults
  * @param log_src logging source that shall be used
  * @param radio true if it is a radio interface, false for router
  * @return -1 if an error happened, 0 otherwise
@@ -82,6 +83,7 @@ dlep_if_get_tree(bool radio) {
 int
 dlep_if_add(struct dlep_if *interf, const char *ifname,
     const struct oonf_layer2_origin *l2_origin,
+    const struct oonf_layer2_origin *l2_default_origin,
     enum oonf_log_source log_src, bool radio) {
   struct dlep_extension *ext;
 
@@ -99,7 +101,7 @@ dlep_if_add(struct dlep_if *interf, const char *ifname,
       _DLEP_PREFIX, sizeof(_DLEP_PREFIX) - 1);
 
   if (dlep_session_add(&interf->session,
-      interf->l2_ifname, l2_origin,
+      interf->l2_ifname, l2_origin, l2_default_origin,
       &interf->udp_out,
       radio, log_src)) {
     abuf_free(&interf->udp_out);
index 1410da0..fa5441b 100644 (file)
@@ -86,6 +86,7 @@ struct dlep_if {
 struct avl_tree *dlep_if_get_tree(bool radio);
 int dlep_if_add(struct dlep_if *interf, const char *ifname,
     const struct oonf_layer2_origin *l2_origin,
+    const struct oonf_layer2_origin *l2_default_origin,
     enum oonf_log_source log_src, bool radio);
 void dlep_if_remove(struct dlep_if *interface);
 
index 1bd4fcd..6e3939b 100644 (file)
@@ -111,6 +111,7 @@ dlep_session_init(void) {
  * @param session session to initialize
  * @param l2_ifname name of layer2 interface for dlep session
  * @param l2_origin layer2 db origin id for session
+ * @param l2_default_origin layer2 originator that shall be used for setting defaults
  * @param out output buffer for session
  * @param radio true if this is a radio session,
  *   false for a router session
@@ -119,7 +120,9 @@ dlep_session_init(void) {
  */
 int
 dlep_session_add(struct dlep_session *session, const char *l2_ifname,
-    const struct oonf_layer2_origin *l2_origin, struct autobuf *out, bool radio,
+    const struct oonf_layer2_origin *l2_origin,
+    const struct oonf_layer2_origin *l2_default_origin,
+    struct autobuf *out, bool radio,
     enum oonf_log_source log_source) {
   struct dlep_session_parser *parser;
   struct dlep_extension *ext;
@@ -132,6 +135,7 @@ dlep_session_add(struct dlep_session *session, const char *l2_ifname,
 
   session->log_source = log_source;
   session->l2_origin = l2_origin;
+  session->l2_default_origin = l2_default_origin;
   session->radio = radio;
   session->writer.out = out;
 
index 6b78d06..494e47d 100644 (file)
@@ -290,6 +290,9 @@ struct dlep_session {
   /*! oonf layer2 origin for dlep session */
   const struct oonf_layer2_origin *l2_origin;
 
+  /*! oonf layer2 origin for dlep session defaults */
+  const struct oonf_layer2_origin *l2_default_origin;
+
   /*! send content of output buffer */
   void (*cb_send_buffer)(struct dlep_session *, int af_family);
 
@@ -335,6 +338,7 @@ void dlep_session_init(void);
 
 int dlep_session_add(struct dlep_session *session,
     const char *l2_ifname, const struct oonf_layer2_origin *l2_origin,
+    const struct oonf_layer2_origin *l2_default_origin,
     struct autobuf *out, bool radio, enum oonf_log_source);
 void dlep_session_remove(struct dlep_session *session);
 void dlep_session_terminate(struct dlep_session *session);
index c6dad9f..0ded6a8 100644 (file)
@@ -73,18 +73,24 @@ static void _cleanup_interface(struct dlep_radio_if *interface);
 
 /* DLEP interfaces */
 static struct oonf_class _interface_class = {
-  .name = "DLEP radio session",
+  .name = "DLEP radio interface",
   .size = sizeof(struct dlep_radio_if),
 };
 
 static bool _shutting_down;
 
 static struct oonf_layer2_origin _l2_origin = {
-  .name = "dlep radio interface",
+  .name = "dlep radio",
   .proactive = true,
   .priority = OONF_LAYER2_ORIGIN_RELIABLE,
 };
 
+static struct oonf_layer2_origin _l2_default_origin = {
+  .name = "dlep radio defaults",
+  .proactive = false,
+  .priority = OONF_LAYER2_ORIGIN_UNRELIABLE,
+};
+
 /**
  * Initialize everything for dlep radio interfaces. This function also
  * initializes the dlep sessions.
@@ -174,7 +180,8 @@ dlep_radio_add_interface(const char *ifname) {
     return NULL;
   }
 
-  if (dlep_if_add(&interface->interf, ifname, &_l2_origin, LOG_DLEP_RADIO, true)) {
+  if (dlep_if_add(&interface->interf, ifname,
+      &_l2_origin, &_l2_default_origin, LOG_DLEP_RADIO, true)) {
     oonf_class_free(&_interface_class, interface);
     return NULL;
   }
index e386e7e..97b1e73 100644 (file)
@@ -130,6 +130,7 @@ _cb_incoming_tcp(struct oonf_stream_session *tcp_session) {
   /* activate session */
   if (dlep_session_add(&radio_session->session,
       interface->interf.l2_ifname, interface->interf.session.l2_origin,
+      interface->interf.session.l2_default_origin,
       &tcp_session->out, true, LOG_DLEP_RADIO)) {
     return -1;
   }
index 95201a7..78bcc5c 100644 (file)
@@ -82,12 +82,19 @@ static struct oonf_class _router_if_class = {
 };
 
 static bool _shutting_down;
+
 static struct oonf_layer2_origin _l2_origin = {
-  .name = "dlep router interface",
+  .name = "dlep router",
   .proactive = true,
   .priority = OONF_LAYER2_ORIGIN_RELIABLE,
 };
 
+static struct oonf_layer2_origin _l2_default_origin = {
+  .name = "dlep router defaults",
+  .proactive = false,
+  .priority = OONF_LAYER2_ORIGIN_UNRELIABLE,
+};
+
 /**
  * Initialize dlep router interface framework. This will also
  * initialize the dlep router session framework.
@@ -181,7 +188,7 @@ dlep_router_add_interface(const char *ifname) {
   }
 
   if (dlep_if_add(&interface->interf, ifname,
-      &_l2_origin, LOG_DLEP_ROUTER, false)) {
+      &_l2_origin, &_l2_default_origin, LOG_DLEP_ROUTER, false)) {
     oonf_class_free(&_router_if_class, interface);
     return NULL;
   }
index 3cfda8b..5b7b642 100644 (file)
@@ -170,6 +170,7 @@ dlep_router_add_session(struct dlep_router_if *interf,
 
   if (dlep_session_add(&router_session->session,
       interf->interf.l2_ifname, interf->interf.session.l2_origin,
+      interf->interf.session.l2_default_origin,
       &router_session->stream->out, false, LOG_DLEP_ROUTER)) {
     dlep_router_remove_session(router_session);
     return NULL;