summaryrefslogtreecommitdiffstats
path: root/docs/testing/user/userguide/nsb/tc_prox_context_bng_port.rst
AgeCommit message (Expand)AuthorFilesLines
2017-10-20Added NSB sample Test Case documentation.Maciej Skrocki1-0/+109
href='#n88'>88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
/*
// 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_VFW_H__
#define __INCLUDE_PIPELINE_VFW_H__

/**
 * @file
 * Pipeline VFW FE.
 *
 * Pipeline VFW Front End (FE).
 * Runs on the Master pipeline, responsible for CLI commands.
 *
 */

#include "pipeline.h"
#include "app.h"
#include "pipeline_vfw_be.h"

#include <civetweb.h>
#include <json/json.h>

/* VFW IPV4 and IPV6 enable flags for debugging (Default both on) */
extern int vfw_ipv4_enabled;
extern int vfw_ipv6_enabled;

/* Number of VFW Rules, default 4 * 1024 */
extern uint32_t vfw_n_rules;
/* VFW Rule Table TRIE - 2 (Active, Standby Global table per ipv4, ipv6 */
extern void *vfw_rule_table_ipv4_active;
extern void *vfw_rule_table_ipv4_standby;
extern void *vfw_rule_table_ipv6_active;
extern void *vfw_rule_table_ipv6_standby;

#define active_rule_table       0
#define standby_rule_table       1
#define vfw_add_command              0
#define vfw_delete_command       1
#define IPV6_32BIT_LENGTH       4

/**
 * Add VFW rule to the VFW 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 VFW pipeline parameters.
 * @param key
 *  A pointer to the VFW rule to add.
 * @param priority
 *  Priority of the VFW rule.
 * @param port_id
 *  Port ID of the VFW rule.
 * @param action_id
 *  Action ID of the VFW rule. Defined in Action Table.
 *
 * @return
 *  0 on success, negative on error.
 */
int
app_pipeline_vfw_add_rule(struct app_params *app,
                          struct pipeline_vfw_key *key,
                          uint32_t priority,
                          uint32_t port_id, uint32_t action_id);

/**
 * Delete VFW rule from the VFW 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 VFW pipeline parameters.
 * @param key
 *  A pointer to the VFW rule to delete.
 *
 * @return
 *  0 on success, negative on error.
 */
int
app_pipeline_vfw_delete_rule(struct app_params *app,
                            struct pipeline_vfw_key *key);

/**
 * Clear all VFW rules from the VFW 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 VFW pipeline parameters.
 *
 * @return
 *  0 on success, negative on error.
 */
int app_pipeline_vfw_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 VFW 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 VFW 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_vfw;

#ifdef REST_API_SUPPORT
/* REST Api's defined here */
int vfw_rules_handler(struct mg_connection *conn, void *cbdata);
int vfw_load_rules_handler(struct mg_connection *conn, void *cbdata);
int vfw_clearrules_handler(struct mg_connection *conn, void *cbdata);
int vfw_stats_handler(struct mg_connection *conn, void *cbdata);
int vfw_clearstats_handler(__rte_unused struct mg_connection *conn,
	 __rte_unused void *cbdata);
int vfw_cmd_ver_handler(struct mg_connection *conn, __rte_unused void *cbdata);
void rest_api_vfw_init(struct mg_context *ctx, struct app_params *app);
#endif

#endif