Use correct name to register ABF plugin with ACLs
[vpp.git] / src / plugins / abf / abf_itf_attach.c
index 2e30db9..166ccec 100644 (file)
@@ -47,6 +47,11 @@ static u32 *abf_alctx_per_itf[FIB_PROTOCOL_MAX];
  * ABF ACL module user id returned during the initialization
  */
 static u32 abf_acl_user_id;
+/*
+ * ACL plugin method vtable
+ */
+
+static acl_plugin_methods_t acl_plugin;
 
 /**
  * A DB of attachments; key={abf_index,sw_if_index}
@@ -152,7 +157,7 @@ abf_setup_acl_lc (fib_protocol_t fproto, u32 sw_if_index)
     aia = abf_itf_attach_get (*aiai);
     vec_add1 (acl_vec, aia->aia_acl);
   }
-  acl_plugin_set_acl_vec_for_context (abf_alctx_per_itf[fproto][sw_if_index],
+  acl_plugin.set_acl_vec_for_context (abf_alctx_per_itf[fproto][sw_if_index],
                                      acl_vec);
   vec_free (acl_vec);
 }
@@ -179,7 +184,7 @@ abf_itf_attach (fib_protocol_t fproto,
     return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS);
 
   /*
-   * construt a new attachemnt object
+   * construct a new attachment object
    */
   pool_get (abf_itf_attach_pool, aia);
 
@@ -205,7 +210,7 @@ abf_itf_attach (fib_protocol_t fproto,
   if (1 == vec_len (abf_per_itf[fproto][sw_if_index]))
     {
       /*
-       * when enabling the first ABF polciy on the interface
+       * when enabling the first ABF policy on the interface
        * we need to enable the interface input feature
        */
       vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ?
@@ -219,7 +224,7 @@ abf_itf_attach (fib_protocol_t fproto,
       /* if this is the first ABF policy, we need to acquire an ACL lookup context */
       vec_validate_init_empty (abf_alctx_per_itf[fproto], sw_if_index, ~0);
       abf_alctx_per_itf[fproto][sw_if_index] =
-       acl_plugin_get_lookup_context_index (abf_acl_user_id, sw_if_index, 0);
+       acl_plugin.get_lookup_context_index (abf_acl_user_id, sw_if_index, 0);
     }
   else
     {
@@ -231,7 +236,7 @@ abf_itf_attach (fib_protocol_t fproto,
   abf_setup_acl_lc (fproto, sw_if_index);
 
   /*
-   * become a child of the ABF poilcy so we are notified when
+   * become a child of the ABF policy so we are notified when
    * its forwarding changes.
    */
   aia->aia_sibling = fib_node_child_add (abf_policy_fib_node_type,
@@ -248,7 +253,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index)
   u32 index;
 
   /*
-   * check this is a valid attahment
+   * check this is a valid attachment
    */
   aia = abf_itf_attach_db_find (policy_id, sw_if_index);
 
@@ -256,7 +261,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index)
     return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS);
 
   /*
-   * first remove from the interface's vecotr
+   * first remove from the interface's vector
    */
   ASSERT (abf_per_itf[fproto]);
   ASSERT (abf_per_itf[fproto][sw_if_index]);
@@ -270,7 +275,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index)
   if (0 == vec_len (abf_per_itf[fproto][sw_if_index]))
     {
       /*
-       * when deleting the last ABF polciy on the interface
+       * when deleting the last ABF policy on the interface
        * we need to disable the interface input feature
        */
       vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ?
@@ -282,7 +287,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index)
                                   sw_if_index, 0, NULL, 0);
 
       /* Return the lookup context, invalidate its id in our records */
-      acl_plugin_put_lookup_context_index (abf_alctx_per_itf[fproto]
+      acl_plugin.put_lookup_context_index (abf_alctx_per_itf[fproto]
                                           [sw_if_index]);
       abf_alctx_per_itf[fproto][sw_if_index] = ~0;
     }
@@ -302,7 +307,7 @@ abf_itf_detach (fib_protocol_t fproto, u32 policy_id, u32 sw_if_index)
                         aia->aia_abf, aia->aia_sibling);
 
   /*
-   * remove the attahcment from the DB
+   * remove the attachment from the DB
    */
   abf_itf_attach_db_del (policy_id, sw_if_index);
 
@@ -326,7 +331,7 @@ format_abf_intf_attach (u8 * s, va_list * args)
   abf_policy_t *ap;
 
   ap = abf_policy_get (aia->aia_abf);
-  s = format (s, "abf-interface-attach: policy:%d prioity:%d",
+  s = format (s, "abf-interface-attach: policy:%d priority:%d",
              ap->ap_id, aia->aia_prio);
   s = format (s, "\n  %U", format_dpo_id, &aia->aia_dpo, 2);
 
@@ -546,13 +551,25 @@ abf_input_inline (vlib_main_t * vm,
           */
          u32 lc_index = abf_alctx_per_itf[fproto][sw_if_index0];
 
-         acl_plugin_fill_5tuple (lc_index, b0, (FIB_PROTOCOL_IP6 == fproto),
-                                 1, 0, &fa_5tuple0);
-
-         if (acl_plugin_match_5tuple
-             (lc_index, &fa_5tuple0, (FIB_PROTOCOL_IP6 == fproto), &action,
-              &match_acl_pos, &match_acl_index, &match_rule_index,
-              &trace_bitmap))
+         /*
+            A non-inline version looks like this:
+
+            acl_plugin.fill_5tuple (lc_index, b0, (FIB_PROTOCOL_IP6 == fproto),
+            1, 0, &fa_5tuple0);
+            if (acl_plugin.match_5tuple
+            (lc_index, &fa_5tuple0, (FIB_PROTOCOL_IP6 == fproto), &action,
+            &match_acl_pos, &match_acl_index, &match_rule_index,
+            &trace_bitmap))
+            . . .
+          */
+         acl_plugin_fill_5tuple_inline (acl_plugin.p_acl_main, lc_index, b0,
+                                        (FIB_PROTOCOL_IP6 == fproto), 1, 0,
+                                        &fa_5tuple0);
+
+         if (acl_plugin_match_5tuple_inline
+             (acl_plugin.p_acl_main, lc_index, &fa_5tuple0,
+              (FIB_PROTOCOL_IP6 == fproto), &action, &match_acl_pos,
+              &match_acl_index, &match_rule_index, &trace_bitmap))
            {
              /*
               * match:
@@ -571,7 +588,7 @@ abf_input_inline (vlib_main_t * vm,
               * miss:
               *  move on down the feature arc
               */
-             vnet_feature_next (sw_if_index0, &next0, b0);
+             vnet_feature_next (&next0, b0);
            }
 
          if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
@@ -737,12 +754,12 @@ abf_itf_bond_init (vlib_main_t * vm)
 {
   abf_itf_attach_fib_node_type =
     fib_node_register_new_type (&abf_itf_attach_vft);
-  clib_error_t *acl_init_res = acl_plugin_exports_init ();
+  clib_error_t *acl_init_res = acl_plugin_exports_init (&acl_plugin);
   if (acl_init_res)
     return (acl_init_res);
 
   abf_acl_user_id =
-    acl_plugin_register_user_module ("abp plugin", "sw_if_index", NULL);
+    acl_plugin.register_user_module ("ABF plugin", "sw_if_index", NULL);
 
   return (NULL);
 }