diff options
Diffstat (limited to 'VNFs/vACL/pipeline/pipeline_acl.h')
-rw-r--r-- | VNFs/vACL/pipeline/pipeline_acl.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/VNFs/vACL/pipeline/pipeline_acl.h b/VNFs/vACL/pipeline/pipeline_acl.h new file mode 100644 index 00000000..80a85cae --- /dev/null +++ b/VNFs/vACL/pipeline/pipeline_acl.h @@ -0,0 +1,144 @@ +/* +// Copyright (c) 2017 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +*/ + +#ifndef __INCLUDE_PIPELINE_ACL_H__ +#define __INCLUDE_PIPELINE_ACL_H__ + +/** + * @file + * Pipeline ACL FE. + * + * Pipeline ACL Front End (FE). + * Runs on the Master pipeline, responsible for CLI commands. + * + */ + +#include "pipeline.h" +#include "pipeline_acl_be.h" + +/* ACL IPV4 and IPV6 enable flags for debugging (Default both on) */ +extern int acl_ipv4_enabled; +extern int acl_ipv6_enabled; + +/* Number of ACL Rules, default 4 * 1024 */ +extern uint32_t acl_n_rules; +/* ACL Rule Table TRIE - 2 (Active, Standby Global table per ipv4, ipv6 */ +extern void *acl_rule_table_ipv4_active; +extern void *acl_rule_table_ipv4_standby; +extern void *acl_rule_table_ipv6_active; +extern void *acl_rule_table_ipv6_standby; + +#define active_rule_table 0 +#define standby_rule_table 1 +#define acl_add_command 0 +#define acl_delete_command 1 +#define IPV6_32BIT_LENGTH 4 + +/** + * Add ACL rule to the ACL rule table. + * Rules are added standby table. + * Applyruleset command will activate the change. + * Both IPv4 and IPv6 rules can be added. + * + * @param app + * A pointer to the ACL pipeline parameters. + * @param key + * A pointer to the ACL rule to add. + * @param priority + * Priority of the ACL rule. + * @param port_id + * Port ID of the ACL rule. + * @param action_id + * Action ID of the ACL rule. Defined in Action Table. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_acl_add_rule(struct app_params *app, + struct pipeline_acl_key *key, + uint32_t priority, + uint32_t port_id, uint32_t action_id); + +/** + * Delete ACL rule from the ACL rule table. + * Rules deleted from standby tables. + * Applyruleset command will activate the change. + * Both IPv4 and IPv6 rules can be deleted. + * + * @param app + * A pointer to the ACL pipeline parameters. + * @param key + * A pointer to the ACL rule to delete. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_acl_delete_rule(struct app_params *app, + struct pipeline_acl_key *key); + +/** + * Clear all ACL rules from the ACL rule table. + * Rules cleared from standby tables. + * Applyruleset command will activate the change. + * Both IPv4 and IPv6 rules will be cleared. + * + * @param app + * A pointer to the ACL pipeline parameters. + * + * @return + * 0 on success, negative on error. + */ +int app_pipeline_acl_clearrules(struct app_params *app); + +/** + * Add Action to the Action table. + * Actions are added standby table. + * Applyruleset command will activate the change. + * + * @param app + * A pointer to the ACL pipeline parameters. + * @param key + * A pointer to the Action to add. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_action_add(struct app_params *app, + struct pipeline_action_key *key); + +/** + * Delete Action from the Action table. + * Actions are deleted from the standby table. + * Applyruleset command will activate the change. + * + * @param app + * A pointer to the ACL pipeline parameters. + * @param key + * A pointer to the Action to delete. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_action_delete(struct app_params *app, + struct pipeline_action_key *key); + +extern struct pipeline_type pipeline_acl; + +#endif |