diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipcpd/flow.c | 7 | ||||
| -rw-r--r-- | src/ipcpd/flow.h | 31 | ||||
| -rw-r--r-- | src/ipcpd/ipcp-ops.h | 13 | ||||
| -rw-r--r-- | src/ipcpd/ipcp.c | 2 | ||||
| -rw-r--r-- | src/ipcpd/normal/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | src/ipcpd/shim-udp/main.c | 15 | ||||
| -rw-r--r-- | src/irmd/main.c | 13 | ||||
| -rw-r--r-- | src/lib/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/lib/ipcp.c | 32 | ||||
| -rw-r--r-- | src/lib/ipcpd_messages.proto | 11 | 
10 files changed, 58 insertions, 75 deletions
| diff --git a/src/ipcpd/flow.c b/src/ipcpd/flow.c index 10280f3d..4ca61341 100644 --- a/src/ipcpd/flow.c +++ b/src/ipcpd/flow.c @@ -26,10 +26,11 @@  #define OUROBOROS_PREFIX "ipcpd/flow"  #include <ouroboros/logs.h> +#include <ouroboros/flow.h> -flow_t * flow_create(int port_id) +struct flow * flow_create(int port_id)  { -        flow_t * flow = malloc(sizeof *flow); +        struct flow * flow = malloc(sizeof *flow);          if (flow == NULL) {                  LOG_DBGF("Could not malloc flow.");                  return NULL; @@ -45,7 +46,7 @@ flow_t * flow_create(int port_id)          return flow;  } -void flow_destroy(flow_t * flow) +void flow_destroy(struct flow * flow)  {          if (flow == NULL)                  return; diff --git a/src/ipcpd/flow.h b/src/ipcpd/flow.h index 43de5f94..6f50698e 100644 --- a/src/ipcpd/flow.h +++ b/src/ipcpd/flow.h @@ -20,32 +20,15 @@   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   */ -#ifndef OUROBOROS_FLOW_H -#define OUROBOROS_FLOW_H +#ifndef OUROBOROS_IPCP_FLOW_H +#define OUROBOROS_IPCP_FLOW_H -#include <ouroboros/common.h>  #include <ouroboros/list.h> +#include <ouroboros/flow.h>  #include <ouroboros/shm_ap_rbuff.h>  #include <pthread.h> -/* same values as fcntl.h */ -#define FLOW_O_RDONLY   00000000 -#define FLOW_O_WRONLY   00000001 -#define FLOW_O_RDWR     00000002 -#define FLOW_O_ACCMODE  00000003 - -#define FLOW_O_NONBLOCK 00004000 -#define FLOW_O_DEFAULT  00000002 - -#define FLOW_O_INVALID  (FLOW_O_WRONLY | FLOW_O_RDWR) - -enum flow_state { -        FLOW_NULL = 0, -        FLOW_ALLOCATED, -        FLOW_PENDING -}; - -typedef struct flow { +struct flow {          struct list_head list;          int                   port_id; @@ -53,9 +36,9 @@ typedef struct flow {          enum flow_state       state;          pthread_mutex_t  lock; -} flow_t; +}; -flow_t * flow_create(int port_id); -void     flow_destroy(flow_t * flow); +struct flow * flow_create(int port_id); +void          flow_destroy(struct flow * flow);  #endif /* OUROBOROS_FLOW_H */ diff --git a/src/ipcpd/ipcp-ops.h b/src/ipcpd/ipcp-ops.h index 5e90939d..1365f9b6 100644 --- a/src/ipcpd/ipcp-ops.h +++ b/src/ipcpd/ipcp-ops.h @@ -24,7 +24,6 @@  #ifndef IPCPD_IPCP_OPS_H  #define IPCPD_IPCP_OPS_H -#include <ouroboros/common.h>  #include <ouroboros/dif_config.h>  #include <sys/types.h> @@ -38,12 +37,12 @@ struct ipcp_ops {                               size_t  len);          int   (* ipcp_name_reg)(char *   name);          int   (* ipcp_name_unreg)(char * name); -        int   (* ipcp_flow_alloc)(int    port_id, -                                  pid_t  n_pid, -                                  char * dst_ap_name, -                                  char * src_ap_name, -                                  char * src_ae_name, -                                  struct qos_spec * qos); +        int   (* ipcp_flow_alloc)(int           port_id, +                                  pid_t         n_pid, +                                  char *        dst_ap_name, +                                  char *        src_ap_name, +                                  char *        src_ae_name, +                                  enum qos_cube qos);          int   (* ipcp_flow_alloc_resp)(int   port_id,                                         pid_t n_pid,                                         int   response); diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index 13632a80..1e122b73 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -181,7 +181,7 @@ void * ipcp_main_loop(void * o)                                                              msg->dst_name,                                                              msg->src_ap_name,                                                              msg->src_ae_name, -                                                            NULL); +                                                            msg->qos_cube);                          break;                  case IPCP_MSG_CODE__IPCP_FLOW_ALLOC_RESP:                          if (_ipcp->ops->ipcp_flow_alloc_resp == NULL) { diff --git a/src/ipcpd/normal/CMakeLists.txt b/src/ipcpd/normal/CMakeLists.txt index c13cbaa3..58584e20 100644 --- a/src/ipcpd/normal/CMakeLists.txt +++ b/src/ipcpd/normal/CMakeLists.txt @@ -1,5 +1,7 @@ -get_filename_component(CURRENT_SOURCE_PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) -get_filename_component(CURRENT_BINARY_PARENT_DIR ${CMAKE_CURRENT_BINARY_DIR} DIRECTORY) +get_filename_component(CURRENT_SOURCE_PARENT_DIR +  ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) +get_filename_component(CURRENT_BINARY_PARENT_DIR +  ${CMAKE_CURRENT_BINARY_DIR} DIRECTORY)  include_directories(${CMAKE_CURRENT_SOURCE_DIR})  include_directories(${CMAKE_CURRENT_BINARY_DIR}) diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c index 14a698ee..f9a8c42b 100644 --- a/src/ipcpd/shim-udp/main.c +++ b/src/ipcpd/shim-udp/main.c @@ -32,6 +32,7 @@  #include <ouroboros/dif_config.h>  #include <ouroboros/sockets.h>  #include <ouroboros/bitmap.h> +#include <ouroboros/flow.h>  #include <ouroboros/dev.h>  #define OUROBOROS_PREFIX "ipcpd/shim-udp" @@ -679,12 +680,12 @@ static int ipcp_udp_name_unreg(char * name)          return 0;  } -static int ipcp_udp_flow_alloc(int               port_id, -                               pid_t             n_pid, -                               char *            dst_name, -                               char *            src_ap_name, -                               char *            src_ae_name, -                               struct qos_spec * qos) +static int ipcp_udp_flow_alloc(int           port_id, +                               pid_t         n_pid, +                               char *        dst_name, +                               char *        src_ap_name, +                               char *        src_ae_name, +                               enum qos_cube qos)  {          struct sockaddr_in l_saddr;          struct sockaddr_in r_saddr; @@ -708,7 +709,7 @@ static int ipcp_udp_flow_alloc(int               port_id,                  return -1;          } -        if (qos != NULL) +        if (qos != QOS_CUBE_BE)                  LOG_DBGF("QoS requested. UDP/IP can't do that.");          fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); diff --git a/src/irmd/main.c b/src/irmd/main.c index d266273d..65c173de 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -24,7 +24,6 @@  #include <ouroboros/config.h>  #include <ouroboros/logs.h> -#include <ouroboros/common.h>  #include <ouroboros/sockets.h>  #include <ouroboros/irm.h>  #include <ouroboros/ipcp.h> @@ -35,6 +34,8 @@  #include <ouroboros/dif_config.h>  #include <ouroboros/shm_du_map.h>  #include <ouroboros/bitmap.h> +#include <ouroboros/flow.h> +#include <ouroboros/qos.h>  #include <sys/socket.h>  #include <sys/un.h> @@ -56,12 +57,6 @@    #define IRMD_THREADPOOL_SIZE 3  #endif -enum flow_state { -        FLOW_NULL = 0, -        FLOW_PENDING, -        FLOW_ALLOCATED -}; -  struct ipcp_entry {          struct list_head  next;          instance_name_t * api; @@ -927,6 +922,8 @@ static struct port_map_entry * flow_alloc(pid_t  pid,          struct port_map_entry * pme;          instance_name_t * ipcp; +        /* FIXME: Map qos_spec to qos_cube */ +          pthread_mutex_lock(&instance->s_lock);          if (instance->shutdown) {                  pthread_mutex_unlock(&instance->s_lock); @@ -965,7 +962,7 @@ static struct port_map_entry * flow_alloc(pid_t  pid,                              dst_name,                              src_ap_name,                              src_ae_name, -                            qos) < 0) { +                            QOS_CUBE_BE) < 0) {                  pthread_mutex_lock(&instance->r_lock);                  list_del(&pme->next); diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 53a7b354..5166f569 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -38,9 +38,6 @@ set(SOURCE_FILES    utils.c    ) -install(FILES ${IRM_PROTO_HDRS} ${IPCP_PROTO_HDRS} ${DIF_CONFIG_PROTO_HDRS} -  DESTINATION include/ouroboros) -  add_library(ouroboros SHARED ${SOURCE_FILES}    ${IRM_PROTO_SRCS} ${IPCP_PROTO_SRCS} ${DIF_CONFIG_PROTO_SRCS}) diff --git a/src/lib/ipcp.c b/src/lib/ipcp.c index 1f1e5c99..8a4f9629 100644 --- a/src/lib/ipcp.c +++ b/src/lib/ipcp.c @@ -361,13 +361,13 @@ int ipcp_name_unreg(pid_t  pid,          return ret;  } -int ipcp_flow_alloc(pid_t             pid, -                    int               port_id, -                    pid_t             n_pid, -                    char *            dst_name, -                    char *            src_ap_name, -                    char *            src_ae_name, -                    struct qos_spec * qos) +int ipcp_flow_alloc(pid_t         pid, +                    int           port_id, +                    pid_t         n_pid, +                    char *        dst_name, +                    char *        src_ap_name, +                    char *        src_ae_name, +                    enum qos_cube qos)  {          ipcp_msg_t msg = IPCP_MSG__INIT;          ipcp_msg_t * recv_msg = NULL; @@ -376,14 +376,16 @@ int ipcp_flow_alloc(pid_t             pid,          if (dst_name == NULL || src_ap_name == NULL || src_ae_name == NULL)                  return -EINVAL; -        msg.code        = IPCP_MSG_CODE__IPCP_FLOW_ALLOC; -        msg.has_port_id = true; -        msg.port_id     = port_id; -        msg.has_pid     = true; -        msg.pid         = n_pid; -        msg.src_ap_name = src_ap_name; -        msg.src_ae_name = src_ae_name; -        msg.dst_name    = dst_name; +        msg.code         = IPCP_MSG_CODE__IPCP_FLOW_ALLOC; +        msg.has_port_id  = true; +        msg.port_id      = port_id; +        msg.has_pid      = true; +        msg.pid          = n_pid; +        msg.src_ap_name  = src_ap_name; +        msg.src_ae_name  = src_ae_name; +        msg.dst_name     = dst_name; +        msg.has_qos_cube = true; +        msg.qos_cube     = qos;          recv_msg = send_recv_ipcp_msg(pid, &msg);          if (recv_msg == NULL) diff --git a/src/lib/ipcpd_messages.proto b/src/lib/ipcpd_messages.proto index 901adaa0..63e41986 100644 --- a/src/lib/ipcpd_messages.proto +++ b/src/lib/ipcpd_messages.proto @@ -24,9 +24,10 @@ message ipcp_msg {          optional string dst_name     =  8;          optional string src_ap_name  =  9;          optional string src_ae_name  = 10; -        optional dif_config_msg conf = 11; -        optional sint32 fd           = 12; -        optional sint32 pid          = 13; -        optional sint32 response     = 14; -        optional sint32 result       = 15; +        optional sint32 qos_cube     = 11; +        optional dif_config_msg conf = 12; +        optional sint32 fd           = 13; +        optional sint32 pid          = 14; +        optional sint32 response     = 15; +        optional sint32 result       = 16;  }; | 
