diff options
Diffstat (limited to 'hicn-light/src/hicn/api/face.h')
-rw-r--r-- | hicn-light/src/hicn/api/face.h | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/hicn-light/src/hicn/api/face.h b/hicn-light/src/hicn/api/face.h deleted file mode 100644 index 6caf8b9f7..000000000 --- a/hicn-light/src/hicn/api/face.h +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2017-2019 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. - */ - -/** - * \file face.h - * \brief Face abstraction - */ -#ifndef HICN_FACE_H -#define HICN_FACE_H - -#ifndef SPACES -#define SPACES(x) x -#endif -#ifndef SPACE -#define SPACE 1 -#endif -#ifndef NULLTERM -#define NULLTERM 1 -#endif - -#include <hicn/api/ip_address.h> -#include <hicn/api/types.h> - -/* Netdevice type */ - -#include <net/if.h> // IFNAMSIZ - -#define foreach_netdevice_type \ - _(UNDEFINED) \ - _(WIRED) \ - _(WIFI) \ - _(CELLULAR) \ - _(VPN) \ - _(N) - -#define MAXSZ_NETDEVICE_TYPE_ 9 -#define MAXSZ_NETDEVICE_TYPE MAXSZ_NETDEVICE_TYPE_ + NULLTERM - -typedef enum { -#define _(x) x, - foreach_netdevice_type -#undef _ -} netdevice_type_t; - -extern const char* netdevice_type_str[]; - -/* Netdevice */ - -typedef struct { - u32 index; - char name[IFNAMSIZ]; -} netdevice_t; - -#define NETDEVICE_UNDEFINED_INDEX 0 - -/* Face state */ - -#define foreach_face_state \ - _(UNDEFINED) \ - _(PENDING_UP) \ - _(UP) \ - _(PENDING_DOWN) \ - _(DOWN) \ - _(ERROR) \ - _(N) - -#define MAXSZ_FACE_STATE_ 12 -#define MAXSZ_FACE_STATE MAXSZ_FACE_STATE_ + 1 - -typedef enum { -#define _(x) FACE_STATE_##x, - foreach_face_state -#undef _ -} face_state_t; - -extern const char* face_state_str[]; - -/* Face type */ - -#define foreach_face_type \ - _(UNDEFINED) \ - _(HICN) \ - _(HICN_LISTENER) \ - _(TCP) \ - _(TCP_LISTENER) \ - _(UDP) \ - _(UDP_LISTENER) \ - _(N) - -#define MAXSZ_FACE_TYPE_ 13 -#define MAXSZ_FACE_TYPE MAXSZ_FACE_TYPE_ + 1 - -typedef enum { -#define _(x) FACE_TYPE_##x, - foreach_face_type -#undef _ -} face_type_t; - -extern const char* face_type_str[]; - -#define MAXSZ_FACE_ MAXSZ_FACE_TYPE_ + 2 * MAXSZ_IP_ADDRESS + 2 * MAXSZ_PORT + 9 -#define MAXSZ_FACE MAXSZ_FACE_ + 1 - -/* Face tag */ - -/** - * \brief Tags associated to faces, useful to implement policies. - * - * NOTE - * - These tags should be shared with the forwarder, and might in fact be - * defined in a common library. - * - We start with a very simple implementation where all tags are not - * categorized and stored within the same bitfield. - */ -#define foreach_face_tag \ - _(UNDEFINED) \ - /* Connection type */ \ - _(WIRED) \ - _(WIFI) \ - _(LTE) \ - _(VPN) \ - /* Connection security */ \ - _(TRUSTED_NETWORK) \ - _(UNTRUSTED_NETWORK) \ - _(N) - -#define MAXSZ_FACE_TAG_ 17 -#define MAXSZ_FACE_TAG MAXSZ_FACE_TAG_ + 1 - -typedef enum { -#define _(x) FACE_TAG_##x, - foreach_face_tag -#undef _ -} face_tag_t; - -extern const char* face_tag_str[]; - -typedef int face_tags_t; - -static inline void face_tags_add(face_tags_t* tags, face_tag_t tag) { - *tags |= tag; -} - -static inline void face_tags_remove(face_tags_t* tags, face_tag_t tag) { - *tags &= ~tag; -} - -static inline int face_tags_has(face_tags_t tags, face_tag_t tag) { - return tags & tag; -} - -#define FACE_TAGS_EMPTY 0 - -/* Face */ - -typedef struct { - face_type_t type; - union { - struct { - int family; - netdevice_t netdevice; - ip_address_t local_addr; - ip_address_t remote_addr; - } hicn; - struct { - int family; - ip_address_t local_addr; - u16 local_port; - ip_address_t remote_addr; - u16 remote_port; - } tunnel; - }; - int tags; /**< \see face_tag_t */ -} face_t; - -int face_initialize(face_t* face); -int face_initialize_udp(face_t* face, const ip_address_t* local_addr, - u16 local_port, const ip_address_t* remote_addr, - u16 remote_port, int family); -face_t* face_initialize_udp_sa(face_t* face, const struct sockaddr* local_addr, - const struct sockaddr* remote_addr); - -face_t* face_create(); -face_t* face_create_udp(const ip_address_t* local_addr, u16 local_port, - const ip_address_t* remote_addr, u16 remote_port, - int family); -face_t* face_create_udp_sa(const struct sockaddr* local_addr, - const struct sockaddr* remote_addr); - -int face_finalize(face_t* face); - -void face_free(face_t* face); - -typedef bool (*face_cmp_t)(const face_t* f1, const face_t* f2); - -bool face_cmp(const face_t* f1, const face_t* f2); -hash_t face_hash(const face_t* face); - -size_t face_snprintf(char* s, size_t size, const face_t* face); - -#endif /* HICN_FACE_H */ |