From f0bfb2b0c8467154990b49beafb991b7515e37e3 Mon Sep 17 00:00:00 2001 From: Deepak S Date: Mon, 17 Apr 2017 23:03:43 -0700 Subject: vCGNAPT VNF initial check-in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JIRA: SAMPLEVNF-5 The vCGNAPT implementation contains following features: • Static and dynamic Network address translation. • Static and dynamic Network address and port translation • ARP (request, response, gratuitous) • ICMP (terminal echo, echo response, pass-through) • ICMPv6 and ND • UDP, TCP and ICMP protocol pass-through • Multithread support and Multiple physical port support • Limiting max ports per client • Limiting max clients per public IP address • Live Session tracking to NAT flow • NAT64 – connectivity between IPv6 access network to IPv4 data • PCP - Port Control protocol • SIP functionality • FTP functionality Change-Id: I5ebb44ae60e32dd6da5e793efd91a6831a4d30a7 Signed-off-by: Deepak S --- VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h | 138 ++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h (limited to 'VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h') diff --git a/VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h new file mode 100644 index 00000000..5491648a --- /dev/null +++ b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt.h @@ -0,0 +1,138 @@ +/* +// 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_CGNAPT_H__ +#define __INCLUDE_PIPELINE_CGNAPT_H__ + +/** + * @file + * Pipeline CG-NAPT FE. + * + * PipelineCG-NAPT Front End (FE). + * Runs on the Master pipeline, responsible for CLI commands. + * + */ + +#include "pipeline.h" +#include "pipeline_cgnapt_common.h" + +/** + * Add NAPT rule to the NAPT rule table. + * Both IPv4 and IPv6 rules can be added. + * + * @param app + * A pointer to the pipeline app parameters. + * @param pipeline_id + * Pipeline id + * @param key + * A pointer to the NAPT key corresponding to the entry being added. + * @param entry_params + * A pointer to the NAPT entry being added. + * + * @return + * 0 on success, negative on error. + */ +#if 0 +int +app_pipeline_cgnapt_add_entry(struct app_params *app, + uint32_t pipeline_id, + struct pipeline_cgnapt_entry_key *key, + struct app_pipeline_cgnapt_entry_params + *entry_params); +#endif +int app_pipeline_cgnapt_add_entry( + struct app_params *app, + uint32_t pipeline_id, + struct app_pipeline_cgnapt_entry_params *entry_params); +/** + * Delete NAPT rule from the NAPT rule table. + * Both IPv4 and IPv6 rules can be added. + * + * @param app + * A pointer to the pipeline app parameters. + * @param pipeline_id + * Pipeline id + * @param key + * A pointer to the NAPT key corresponding to the entry being added. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_cgnapt_delete_entry(struct app_params *app, + uint32_t pipeline_id, + struct pipeline_cgnapt_entry_key *key); + +/** + * Add multiple NAPT rule to the NAPT rule table. + * Both IPv4 and IPv6 rules can be added. + * + * @param app + * A pointer to the pipeline app parameters. + * @param pipeline_id + * Pipeline id + * @param entry_params + * A pointer to the multiple NAPT entry params being added. + * + * @return + * 0 on success, negative on error. + */ +int app_pipeline_cgnapt_addm_entry(struct app_params *app, uint32_t pipeline_id, + struct app_pipeline_cgnapt_mentry_params + *entry_params); + +/** + * Add Network Specific Prefix for NAT64. + * + * @param app + * A pointer to the pipeline app parameters. + * @param pipeline_id + * Pipeline id + * @param nsp + * A pointer to NSP being added. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_cgnapt_nsp_add_entry(struct app_params *app, + uint32_t pipeline_id, + struct pipeline_cgnapt_nsp_t *nsp); + +/** + * Delete a Network Specific Prefix for NAT64. + * + * @param app + * A pointer to the pipeline app parameters. + * @param pipeline_id + * Pipeline id + * @param nsp + * A pointer to NSP being deleted. + * + * @return + * 0 on success, negative on error. + */ +int +app_pipeline_cgnapt_nsp_del_entry(struct app_params *app, + uint32_t pipeline_id, + struct pipeline_cgnapt_nsp_t *nsp); + +/* + * Pipeline type + */ +extern struct pipeline_type pipeline_cgnapt; + +#endif -- cgit 1.2.3-korg