summaryrefslogtreecommitdiffstats
path: root/src/scvpp/inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/scvpp/inc')
-rw-r--r--src/scvpp/inc/scvpp/comm.h245
-rw-r--r--src/scvpp/inc/scvpp/interface.h69
-rw-r--r--src/scvpp/inc/scvpp/ip.h77
-rw-r--r--src/scvpp/inc/scvpp/nat.h61
-rw-r--r--src/scvpp/inc/scvpp/v3po.h54
5 files changed, 0 insertions, 506 deletions
diff --git a/src/scvpp/inc/scvpp/comm.h b/src/scvpp/inc/scvpp/comm.h
deleted file mode 100644
index a7bac5d..0000000
--- a/src/scvpp/inc/scvpp/comm.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2018 HUACHENTEL and/or its affiliates.
- * Copyright (c) 2018 PANTHEON.tech
- * 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 __SC_VPP_COMMM_H__
-#define __SC_VPP_COMMM_H__
-
-#include <errno.h>
-
-#include <vapi/vapi.h>
-#include <vapi/vapi_common.h>
-#include <vapi/vpe.api.vapi.h>
-
-typedef enum {
- SCVPP_OK = 0, /* Success */
- SCVPP_EINVAL, /* Invalid value encountered */
- SCVPP_EAGAIN, /* Operation would block */
- SCVPP_ENOTSUP, /* Operation not supported */
- SCVPP_ENOMEM, /* Out of memory */
- SCVPP_NOT_FOUND, /* Required element can not be found */
-} scvpp_error_e;
-
-// Use VAPI macros to define symbols
-DEFINE_VAPI_MSG_IDS_VPE_API_JSON;
-
-#define VPP_IP4_HOST_PREFIX_LEN 32
-#define VPP_INTFC_NAME_LEN 64 /* Interface name max length */
-#define VPP_IP4_ADDRESS_LEN 4 /* IPv4 length in VPP format */
-#define VPP_IP6_ADDRESS_LEN 16 /* IPv6 length in VPP format */
-#define VPP_MAC_ADDRESS_LEN 8 /* MAC length in VPP format */
-/* IPv4 and IPv6 length in string format */
-#define VPP_IP4_ADDRESS_STRING_LEN INET_ADDRSTRLEN //16, include '\0'
-#define VPP_IP6_ADDRESS_STRING_LEN INET6_ADDRSTRLEN //46, include '\0'
-#define VPP_IP4_PREFIX_STRING_LEN \
- INET_ADDRSTRLEN + sizeof('/') + 2 // include '\0'
-#define VPP_IP6_PREFIX_STRING_LEN \
- INET6_ADDRSTRLEN + sizeof('/') + 3 // include '\0'
-
-/**********************************MACROS**********************************/
-#define ARG_CHECK(retval, arg) \
- do \
- { \
- if (NULL == (arg)) \
- { \
- return (retval); \
- } \
- } \
- while (0)
-
-#define ARG_CHECK2(retval, arg1, arg2) \
- ARG_CHECK(retval, arg1); \
- ARG_CHECK(retval, arg2)
-
-#define ARG_CHECK3(retval, arg1, arg2, arg3) \
- ARG_CHECK(retval, arg1); \
- ARG_CHECK(retval, arg2); \
- ARG_CHECK(retval, arg3)
-
-#define ARG_CHECK4(retval, arg1, arg2, arg3, arg4) \
- ARG_CHECK(retval, arg1); \
- ARG_CHECK(retval, arg2); \
- ARG_CHECK(retval, arg3); \
- ARG_CHECK(retval, arg4)
-
-/* Suppress compiler warning about unused variable.
- * This must be used only for callback function else suppress your unused
- * parameter in function prototype. */
-#define UNUSED(x) (void)x
-
-#define VAPI_REQUEST_CB(api_name) \
-static vapi_error_e \
-api_name##_cb (struct vapi_ctx_s *ctx, void *callback_ctx, vapi_error_e rv, \
- bool is_last, vapi_payload_##api_name##_reply * reply) \
-{ \
- UNUSED(ctx); UNUSED(rv); UNUSED(is_last); \
- if (callback_ctx) { \
- memcpy(callback_ctx, reply, sizeof(vapi_payload_##api_name##_reply)); \
- } \
- return reply->retval; \
-}
-
-#define VAPI_REQUEST_CB_EXTRA(api_name, member) \
-static vapi_error_e \
-api_name##_cb (struct vapi_ctx_s *ctx, void *callback_ctx, vapi_error_e rv, \
- bool is_last, vapi_payload_##api_name##_reply * reply) \
-{ \
- UNUSED(ctx); UNUSED(rv); UNUSED(is_last); \
- vapi_payload_##api_name##_reply **p = callback_ctx; \
- int size = sizeof(vapi_payload_##api_name##_reply) + reply->member; \
- if (p) { \
- *p = malloc(size); \
- if (!*p) { \
- return VAPI_ENOMEM; \
- } \
- memcpy(*p, reply, size); \
- } \
- return reply->retval; \
-}
-
-#define VAPI_CALL_MODE(call_code, vapi_mode) \
- do \
- { \
- pthread_mutex_lock (&sc_vpp_main.vapi_lock); \
- if (VAPI_MODE_BLOCKING == (vapi_mode)) \
- { \
- rv = call_code; \
- } \
- else \
- { \
- while (VAPI_EAGAIN == (rv = call_code)); \
- if (rv != VAPI_OK) { /* try once more to get reply */ \
- rv = vapi_dispatch (sc_vpp_main.vapi_ctx); \
- } \
- } \
- pthread_mutex_unlock (&sc_vpp_main.vapi_lock); \
- } \
- while (0)
-
-#define VAPI_CALL(call_code) VAPI_CALL_MODE(call_code, sc_vpp_main.vapi_mode)
-
-struct elt {
- void *data; //vapi_payload structure
- struct elt *next;
- int id; //id of the stack element to count total nb of elements
-};
-
-static inline int push(struct elt **stack, void *data, int length)
-{
- struct elt *el;
-
- //new stack node
- el = malloc(sizeof(struct elt));
- if (!el)
- return -ENOMEM;
- el->data = malloc(length);
- if (!el->data) {
- free(el);
- return -ENOMEM;
- }
-
-
- memcpy(el->data, data, length);
- if (*stack)
- el->id = (*stack)->id + 1;
- else
- el->id = 0;
- el->next = *stack; //point to old value of stack
- *stack = el; //el is new stack head
-
- return 0;
-}
-
-static inline void * pop(struct elt **stack)
-{
- struct elt *prev;
- void *data;
-
- if (!(*stack))
- return NULL;
-
- data = (*stack)->data; //get data at stack head
- prev = *stack; //save stack to free memory later
- *stack = (*stack)->next; //new stack
-
- free(prev);
- prev = NULL;
-
- return data;
-}
-
-#define VAPI_DUMP_LIST_CB(api_name) \
-static vapi_error_e \
-api_name##_all_cb(vapi_ctx_t ctx, void *caller_ctx, vapi_error_e rv, bool is_last, \
- vapi_payload_##api_name##_details *reply) \
-{ \
- UNUSED(ctx); UNUSED(rv); \
- struct elt **stackp; \
- \
- if (is_last) { \
- return VAPI_OK; \
- } \
- \
- ARG_CHECK2(VAPI_EINVAL, caller_ctx, reply); \
- \
- stackp = (struct elt**) caller_ctx; \
- push(stackp, reply, sizeof(*reply)); \
- \
- return VAPI_OK; \
-}
-
-#define foreach_stack_elt(stack) \
- for(void *data = pop(&stack); data != NULL ; data = pop(&stack))
-
-
-int sc_aton(const char *cp, u8 * buf, size_t length);
-char * sc_ntoa(const u8 * buf);
-int sc_pton(int af, const char *cp, u8 * buf);
-const char * sc_ntop(int af, const u8 * buf, char *addr);
-
-/**
- * @brief Function converts the u8 array from network byte order to host byte order.
- *
- * @param[in] host IPv4 address.
- * @return host byte order value.
- */
-uint32_t hardntohlu32(uint8_t host[4]);
-
-/*
- * VPP
- */
-
-typedef struct sc_vpp_main_t {
- /* VAPI context */
- vapi_ctx_t vapi_ctx;
-
- /* VAPI calling mode: VAPI_MODE_BLOCKING, VAPI_MODE_NONBLOCKING */
- vapi_mode_e vapi_mode;
-
- /* Mutex for keeping atomicity when calling VAPI */
- pthread_mutex_t vapi_lock;
-
- /* pid of VPP */
- pid_t pid;
-} sc_vpp_main_t;
-
-extern sc_vpp_main_t sc_vpp_main;
-
-sc_vpp_main_t *sc_connect_vpp();
-void sc_disconnect_vpp();
-pid_t sc_get_vpp_pid();
-int sc_end_with(const char* str, const char* end);
-
-#endif //__SC_VPP_COMMM_H__
diff --git a/src/scvpp/inc/scvpp/interface.h b/src/scvpp/inc/scvpp/interface.h
deleted file mode 100644
index 86cd185..0000000
--- a/src/scvpp/inc/scvpp/interface.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2018 PANTHEON.tech.
- *
- * 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 __BAPI_INTERFACE_H__
-#define __BAPI_INTERFACE_H__
-
-#include <vapi/interface.api.vapi.h>
-#include <scvpp/comm.h>
-
-typedef vapi_payload_sw_interface_details sw_interface_dump_t;
-
-/**
- * @brief Change an interface state
- * @param interface_name - name of target interface
- * @param enable - true=state up, false=state down
- * @return 0 for success, else negative SCVPP error code
- */
-int interface_enable(const char *interface_name, const bool enable);
-
-/**
- * @brief Dump details about all existing interfaces
- * @return stack structure containing all interfaces or NULL if empty
- */
-extern struct elt * interface_dump_all();
-
-
-/**
- * @brief Dump details about a specific interface
- * @param details - where answer will be written
- * @param interface_name - name of the interface to dump
- * @return 0 for success or negative SCVPP error code
- */
-extern int interface_dump_iface(sw_interface_dump_t *details,
- const char *interface_name);
-
-/*
- * Library internal helper functions. Symbols should not be exported eventually
- */
-
-/*
- * @brief Get VPP internal index for an interface
- * @param interface_name - name of the interface to get id from
- * @param sw_if_index - pointer to interface index to be returned
- * @return 0 upon success or negative SCVPP error code
- */
-extern int get_interface_id(const char *interface_name, uint32_t *sw_if_index);
-
-/* @brief Get interface name from an interface ID. This is a super expensive
- * operation !!! Avoid using it.
- * @param interface_name - pointer to string holding returned interface name
- * @param sw_if_index - interface index provided
- * @return 0 upon success or negative SCVPP error code
- */
-extern int get_interface_name(char *interface_name, uint32_t sw_if_index);
-
-#endif /* __BAPI_INTERFACE_H__ */
diff --git a/src/scvpp/inc/scvpp/ip.h b/src/scvpp/inc/scvpp/ip.h
deleted file mode 100644
index f8805b3..0000000
--- a/src/scvpp/inc/scvpp/ip.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2018 PANTHEON.tech.
- *
- * 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 __BAPI_IP_H__
-#define __BAPI_IP_H__
-
-#include <vapi/interface.api.vapi.h>
-#include <vapi/ip.api.vapi.h>
-
-typedef vapi_payload_ip_fib_details fib_dump_t;
-
-/*
- * @brief Dump IPv4/IPv6 address from an interface.
- * @param interface_name - name of the interface to get ip from.
- * @param ip_addr - where dump will store IP. If IP not found, returns 0.0.0.0
- * @param prefix_len - pointer where dump will store prefix
- * @param is_ipv6 - true = IPv6, false = IPv4
- * @return 0 on success, or nergative SCVPP error code
- */
-extern int ipv46_address_dump(const char *interface_name, char *ip_addr,
- u8 *prefix_len, bool is_ipv6);
-
-/**
- * @brief Add or remove IPv4/IPv6 address to/from an interface.
- * @param interface_name - name of interface to configure
- * @param addr - address to add
- * @param prefix_len - prefix length of interface
- * @param is_ipv6 - true if ipv6, false otherwise
- * @param add - true to add, false to remove
- */
-extern int ipv46_config_add_remove(const char *interface_name, const char *addr,
- uint8_t prefix_len, bool is_ipv6, bool add);
-
-/*
- * TODO should add a field is_ipv6 because it only do ipv4 now
- * @brief Add or remove an IP route
- * @param dst_address - subnet IP you wish to route
- * @param dst_address_length - prefix length for subnet you wish to route
- * @param next_address - Next hop IP (can use next_hop_interface instead)
- * @param is_add - true to add, false to remove
- * @param table_id - id of the tab in FIB
- * @param next_hop_interface - Next hop interface (can use next_address instead)
- */
-extern int
-ipv46_config_add_del_route(const char* dst_address, u8 dst_address_length,
- const char* next_address, u8 is_add, u32 table_id,
- const char *next_hop_interface);
-
-/**
- * @brief Dump all FIB tables entries
- * @return stacked answers on success, or NULL on failure
- */
-extern struct elt* ipv4_fib_dump_all();
-
-/*
- * @brief Dump information about a prefix, based on fib_dump_all
- * @param prefix_xpath - prefix to look for in FIB
- * @param reply - FIB entry dump replied
- * @return SCVPP_OK if prefix found or SCVPP_NOT_FOUND
- */
-extern int ipv4_fib_dump_prefix(const char *prefix_xpath, fib_dump_t **reply);
-
-#endif /* __BAPI_IP_H__ */
diff --git a/src/scvpp/inc/scvpp/nat.h b/src/scvpp/inc/scvpp/nat.h
deleted file mode 100644
index 40e727e..0000000
--- a/src/scvpp/inc/scvpp/nat.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2018 PANTHEON.tech.
- *
- * 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 __BAPI_NAT_H__
-#define __BAPI_NAT_H__
-
-#include <vapi/nat.api.vapi.h>
-
-typedef vapi_payload_nat44_interface_details nat44_interface_details_t;
-typedef vapi_payload_nat44_add_del_interface_addr nat44_add_del_interface_addr_t;
-typedef vapi_payload_nat44_add_del_address_range nat44_add_del_address_range_t;
-typedef vapi_payload_nat44_add_del_static_mapping nat44_add_del_static_mapping_t;
-typedef vapi_payload_nat44_static_mapping_details nat44_static_mapping_details_t;
-typedef vapi_payload_nat44_forwarding_enable_disable nat44_forwarding_enable_disable_t;
-typedef vapi_payload_nat_set_workers nat_set_workers_t;
-
-
-//Wrapper function, if we want hide the VAPI return value
-extern int nat44_interface_dump(nat44_interface_details_t *reply);
-extern int nat44_add_del_interface_addr(
- const nat44_add_del_interface_addr_t *msg);
-extern int nat44_add_del_addr_range(const nat44_add_del_address_range_t *range);
-extern int nat44_add_del_static_mapping(
- const nat44_add_del_static_mapping_t *msg);
-extern int nat44_static_mapping_dump(nat44_static_mapping_details_t *reply);
-extern int nat44_forwarding_enable_disable(
- const nat44_forwarding_enable_disable_t *msg);
-extern int nat_set_workers(const nat_set_workers_t *msg);
-
-
-// Alternative, if we don't want hide VAPI return value
-
-// extern vapi_error_e bin_api_nat44_interface_dump(nat44_interface_details_t *reply);
-// extern vapi_error_e bin_api_nat44_add_del_interface_addr(
-// const nat44_add_del_interface_addr_t *msg);
-// extern vapi_error_e bin_api_nat44_add_del_addr_range(
-// const nat44_add_del_address_range_t *range);
-// extern vapi_error_e bin_api_nat44_add_del_static_mapping(
-// const nat44_add_del_static_mapping_t *msg);
-// extern vapi_error_e bin_api_nat44_static_mapping_dump(
-// nat44_static_mapping_details_t *reply);
-// extern vapi_error_e bin_api_nat44_forwarding_enable_disable(
-// const nat44_forwarding_enable_disable_t *msg);
-// extern vapi_error_e bin_api_nat_set_workers(const nat_set_workers_t *msg);
-
-
-#endif /* __BAPI_NAT_H__ */
-
diff --git a/src/scvpp/inc/scvpp/v3po.h b/src/scvpp/inc/scvpp/v3po.h
deleted file mode 100644
index f876ab4..0000000
--- a/src/scvpp/inc/scvpp/v3po.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- * 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 _V3PO__INTERFACE_H__
-#define _V3PO__INTERFACE_H__
-
-#include <vapi/tapv2.api.vapi.h>
-#include <vapi/l2.api.vapi.h>
-
-/**
- * V3PO defines operations for specific interfaces used by VPP like:
- * - tapv2
- */
-
-/* tapv2 */
-
-typedef vapi_payload_tap_create_v2 tapv2_create_t;
-typedef vapi_payload_sw_interface_tap_v2_details tapv2_dump_t;
-
-/**
- * TODO problem: vapi_payload_sw_interface_tap_v2_details reply is NULL
- * @brief Dump information about a tap interface
- * @param dump - where dump information will be stored
- * @return 0 on success, or negative SCVPP error code
- */
-extern int dump_tapv2(tapv2_dump_t *dump);
-
-/**
- * @brief Create a tapv2 interface
- * @param query - required structure for the creation of a VPP tapv2 interface
- * @return 0 on success, or negative SCVPP error code
- */
-extern int create_tapv2(tapv2_create_t *query);
-
-/**
- * @brief Delete a tapv2 interface
- * @param interface_name - name of the interface to delete
- * @return 0 on success, or negative SCVPP error code
- */
-extern int delete_tapv2(char *interface_name);
-
-#endif /* __V3PO_INTERFACE_H__ */