X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvppcom.h;h=61df64a6852303123f096cb7c13795e700dfc022;hb=a238082a8a74aee63620df1c4151157dd0003087;hp=90bec310d068fdc234c4b9ac3b1ac416ed4d5bec;hpb=8ac1d6d05f2a0d6759284d4eeb5079644a5c8c86;p=vpp.git diff --git a/src/vcl/vppcom.h b/src/vcl/vppcom.h index 90bec310d06..61df64a6852 100644 --- a/src/vcl/vppcom.h +++ b/src/vcl/vppcom.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * Copyright (c) 2017-2020 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: @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -48,51 +49,11 @@ typedef enum { VPPCOM_PROTO_TCP = 0, VPPCOM_PROTO_UDP, - VPPCOM_PROTO_SCTP, VPPCOM_PROTO_NONE, VPPCOM_PROTO_TLS, - VPPCOM_PROTO_UDPC, VPPCOM_PROTO_QUIC, } vppcom_proto_t; -static inline char * -vppcom_proto_str (vppcom_proto_t proto) -{ - char *proto_str; - - switch (proto) - { - case VPPCOM_PROTO_TCP: - proto_str = "TCP"; - break; - case VPPCOM_PROTO_UDP: - proto_str = "UDP"; - break; - case VPPCOM_PROTO_SCTP: - proto_str = "SCTP"; - break; - case VPPCOM_PROTO_TLS: - proto_str = "TLS"; - break; - case VPPCOM_PROTO_UDPC: - proto_str = "UDPC"; - break; - case VPPCOM_PROTO_QUIC: - proto_str = "QUIC"; - break; - default: - proto_str = "UNKNOWN"; - break; - } - return proto_str; -} - -static inline int -vcl_proto_is_dgram (uint8_t proto) -{ - return proto == VPPCOM_PROTO_UDP || proto == VPPCOM_PROTO_UDPC; -} - typedef enum { VPPCOM_IS_IP6 = 0, @@ -115,6 +76,7 @@ typedef enum VPPCOM_OK = 0, VPPCOM_EAGAIN = -EAGAIN, VPPCOM_EWOULDBLOCK = -EWOULDBLOCK, + VPPCOM_EINPROGRESS = -EINPROGRESS, VPPCOM_EFAULT = -EFAULT, VPPCOM_ENOMEM = -ENOMEM, VPPCOM_EINVAL = -EINVAL, @@ -135,6 +97,7 @@ typedef enum VPPCOM_ATTR_GET_FLAGS, VPPCOM_ATTR_SET_FLAGS, VPPCOM_ATTR_GET_LCL_ADDR, + VPPCOM_ATTR_SET_LCL_ADDR, VPPCOM_ATTR_GET_PEER_ADDR, VPPCOM_ATTR_GET_LIBC_EPFD, VPPCOM_ATTR_SET_LIBC_EPFD, @@ -165,6 +128,7 @@ typedef enum VPPCOM_ATTR_SET_TCP_USER_MSS, VPPCOM_ATTR_SET_SHUT, VPPCOM_ATTR_GET_SHUT, + VPPCOM_ATTR_SET_CONNECTED, } vppcom_attr_op_t; typedef struct _vcl_poll @@ -188,71 +152,8 @@ typedef unsigned long vcl_si_set; /* * VPPCOM Public API Functions */ -static inline const char * -vppcom_retval_str (int retval) -{ - char *st; - - switch (retval) - { - case VPPCOM_OK: - st = "VPPCOM_OK"; - break; - - case VPPCOM_EAGAIN: - st = "VPPCOM_EAGAIN"; - break; - - case VPPCOM_EFAULT: - st = "VPPCOM_EFAULT"; - break; - - case VPPCOM_ENOMEM: - st = "VPPCOM_ENOMEM"; - break; - - case VPPCOM_EINVAL: - st = "VPPCOM_EINVAL"; - break; - - case VPPCOM_EBADFD: - st = "VPPCOM_EBADFD"; - break; - case VPPCOM_EAFNOSUPPORT: - st = "VPPCOM_EAFNOSUPPORT"; - break; - - case VPPCOM_ECONNABORTED: - st = "VPPCOM_ECONNABORTED"; - break; - - case VPPCOM_ECONNRESET: - st = "VPPCOM_ECONNRESET"; - break; - - case VPPCOM_ENOTCONN: - st = "VPPCOM_ENOTCONN"; - break; - - case VPPCOM_ECONNREFUSED: - st = "VPPCOM_ECONNREFUSED"; - break; - - case VPPCOM_ETIMEDOUT: - st = "VPPCOM_ETIMEDOUT"; - break; - - default: - st = "UNKNOWN_STATE"; - break; - } - - return st; -} - -/* TBD: make these constructor/destructor function */ -extern int vppcom_app_create (char *app_name); +extern int vppcom_app_create (const char *app_name); extern void vppcom_app_destroy (void); extern int vppcom_session_create (uint8_t proto, uint8_t is_nonblocking); @@ -312,6 +213,9 @@ extern int vppcom_session_is_connectable_listener (uint32_t session_handle); extern int vppcom_session_listener (uint32_t session_handle); extern int vppcom_session_n_accepted (uint32_t session_handle); +extern const char *vppcom_proto_str (vppcom_proto_t proto); +extern const char *vppcom_retval_str (int retval); + /** * Request from application to register a new worker * @@ -330,6 +234,11 @@ extern void vppcom_worker_unregister (void); */ extern int vppcom_worker_index (void); +/** + * Set current worker index + */ +extern void vppcom_worker_index_set (int); + /** * Returns the current worker's message queues epoll fd *