diff options
| author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-07-12 18:21:36 +0200 | 
|---|---|---|
| committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-07-12 18:21:36 +0200 | 
| commit | 0027209cccbd5195b6d4ffe88adc8ba1ac3f3fe2 (patch) | |
| tree | 8f974b624b06a72badb075013db343c7e227eb2d /src | |
| parent | 1a35c29ba743424df0cb27408cf08f7022a1c5f5 (diff) | |
| parent | d96bac100c5fe181383e947c1e62241cbabce6ac (diff) | |
| download | ouroboros-0027209cccbd5195b6d4ffe88adc8ba1ac3f3fe2.tar.gz ouroboros-0027209cccbd5195b6d4ffe88adc8ba1ac3f3fe2.zip | |
Merged in sandervrijders/ouroboros/be (pull request #170)
Be
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipcpd/ipcp-ops.h | 3 | ||||
| -rw-r--r-- | src/ipcpd/ipcp.c | 3 | ||||
| -rw-r--r-- | src/ipcpd/normal/fmgr.h | 52 | ||||
| -rw-r--r-- | src/ipcpd/normal/frct.h | 37 | ||||
| -rw-r--r-- | src/ipcpd/normal/ribmgr.h | 35 | ||||
| -rw-r--r-- | src/irmd/main.c | 14 | ||||
| -rw-r--r-- | src/lib/ipcp.c | 12 | ||||
| -rw-r--r-- | src/lib/ipcpd_messages.proto | 27 | 
8 files changed, 145 insertions, 38 deletions
| diff --git a/src/ipcpd/ipcp-ops.h b/src/ipcpd/ipcp-ops.h index 8f444a79..e43c2c38 100644 --- a/src/ipcpd/ipcp-ops.h +++ b/src/ipcpd/ipcp-ops.h @@ -30,8 +30,7 @@  struct ipcp_ops {          int   (* ipcp_bootstrap)(struct dif_config * conf); -        int   (* ipcp_enroll)(char * dif_name, -                              char * n_1_dif); +        int   (* ipcp_enroll)(char * dif_name);          int   (* ipcp_name_reg)(char *   name);          int   (* ipcp_name_unreg)(char * name);          int   (* ipcp_flow_alloc)(pid_t         n_api, diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index 444d17bb..fb31cf1b 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -184,8 +184,7 @@ void * ipcp_main_loop(void * o)                          }                          ret_msg.has_result = true;                          ret_msg.result = -                                _ipcp->ops->ipcp_enroll(msg->dif_name, -                                                        msg->n_1_dif); +                                _ipcp->ops->ipcp_enroll(msg->dif_name);                          break;                  case IPCP_MSG_CODE__IPCP_NAME_REG: diff --git a/src/ipcpd/normal/fmgr.h b/src/ipcpd/normal/fmgr.h new file mode 100644 index 00000000..8a335e77 --- /dev/null +++ b/src/ipcpd/normal/fmgr.h @@ -0,0 +1,52 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Flow manager of the IPC Process + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef OUROBOROS_IPCP_FMGR_H +#define OUROBOROS_IPCP_FMGR_H + +#include <ouroboros/qos.h> +#include <ouroboros/shared.h> + +int fmgr_init(); +int fmgr_fini(); + +/* N-flow ops */ +int fmgr_mgmt_flow(char * dst_name); +int fmgr_dt_flow(char * dst_name); + +/* N+1-flow ops */ +int fmgr_flow_alloc(pid_t         n_api, +                    int           port_id, +                    char *        dst_ap_name, +                    char *        src_ae_name, +                    enum qos_cube qos); + +int fmgr_flow_alloc_resp(pid_t n_api, +                         int   port_id, +                         int   response); + +int fmgr_flow_dealloc(int port_id); + +/* RIB Manager calls this (param will be of type fmgr_msg_t) */ +int fmgr_flow_msg(); + +#endif diff --git a/src/ipcpd/normal/frct.h b/src/ipcpd/normal/frct.h new file mode 100644 index 00000000..2ac66652 --- /dev/null +++ b/src/ipcpd/normal/frct.h @@ -0,0 +1,37 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * The Flow and Retransmission control component + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef OUROBOROS_IPCP_FRCT_H +#define OUROBOROS_IPCP_FRCT_H + +struct frct_i; + +int             frct_init(struct dt_const * const); +int             frct_fini(); + +struct frct_i * frct_i_create(int port_id, +                              enum qos_cube cube); +int             frct_i_destroy(struct frct_i * instance); + +int             frct_dt_flow(int fd); + +#endif diff --git a/src/ipcpd/normal/ribmgr.h b/src/ipcpd/normal/ribmgr.h new file mode 100644 index 00000000..b39aba63 --- /dev/null +++ b/src/ipcpd/normal/ribmgr.h @@ -0,0 +1,35 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * RIB manager of the IPC Process + * + *    Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef OUROBOROS_IPCP_RIBMGR_H +#define OUROBOROS_IPCP_RIBMGR_H + +int rib_init(); +int rib_fini(); + +int rib_mgmt_flow(int fd); +int rib_bootstrap(struct dif_config * conf); + +/* Called by Flow Manager (param of type fmgr_msg_t) */ +int rib_fmgr_msg(); + +#endif diff --git a/src/irmd/main.c b/src/irmd/main.c index 30ecbc59..17e51c05 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -422,8 +422,6 @@ static int bootstrap_ipcp(pid_t              api,  static int enroll_ipcp(pid_t  api,                         char * dif_name)  { -        char ** n_1_difs = NULL; -        ssize_t n_1_difs_size = 0;          struct ipcp_entry * entry = NULL;          pthread_rwlock_rdlock(&instance->state_lock); @@ -451,17 +449,7 @@ static int enroll_ipcp(pid_t  api,                  return -1;          } -        n_1_difs_size = nsm_resolve(dif_name, n_1_difs); -        if (n_1_difs_size < 1) { -                free(entry->dif_name); -                entry->dif_name = NULL; -                pthread_rwlock_unlock(&instance->reg_lock); -                pthread_rwlock_unlock(&instance->state_lock); -                LOG_ERR("Could not find N-1 DIFs."); -                return -1; -        } - -        if (ipcp_enroll(api, dif_name, n_1_difs[0])) { +        if (ipcp_enroll(api, dif_name)) {                  free(entry->dif_name);                  entry->dif_name = NULL;                  pthread_rwlock_unlock(&instance->reg_lock); diff --git a/src/lib/ipcp.c b/src/lib/ipcp.c index 3fd31f37..373baafd 100644 --- a/src/lib/ipcp.c +++ b/src/lib/ipcp.c @@ -221,20 +221,18 @@ int ipcp_bootstrap(pid_t api,          return ret;  } -int ipcp_enroll(pid_t api, -                char * dif_name, -                char * n_1_dif) +int ipcp_enroll(pid_t  api, +                char * dif_name)  {          ipcp_msg_t msg = IPCP_MSG__INIT;          ipcp_msg_t * recv_msg = NULL;          int ret = -1; -        if (n_1_dif == NULL || dif_name == NULL) +        if (dif_name == NULL)                  return -EINVAL;          msg.code     = IPCP_MSG_CODE__IPCP_ENROLL;          msg.dif_name = dif_name; -        msg.n_1_dif  = n_1_dif;          recv_msg = send_recv_ipcp_msg(api, &msg);          if (recv_msg == NULL) { @@ -252,8 +250,8 @@ int ipcp_enroll(pid_t api,          return ret;  } -int ipcp_name_reg(pid_t    api, -                  char *   name) +int ipcp_name_reg(pid_t  api, +                  char * name)  {          ipcp_msg_t msg = IPCP_MSG__INIT;          ipcp_msg_t * recv_msg = NULL; diff --git a/src/lib/ipcpd_messages.proto b/src/lib/ipcpd_messages.proto index eb764e18..6361c461 100644 --- a/src/lib/ipcpd_messages.proto +++ b/src/lib/ipcpd_messages.proto @@ -14,18 +14,17 @@ enum ipcp_msg_code {  message ipcp_msg {          required ipcp_msg_code code  =  1;          optional string dif_name     =  2; -        optional string n_1_dif      =  3; -        repeated string dif_names    =  4; -        optional int32  len          =  5; -        optional string name         =  6; -        optional sint32 port_id      =  7; -        optional string dst_name     =  8; -        optional string src_ap_name  =  9; -        optional string src_ae_name  = 10; -        optional sint32 qos_cube     = 11; -        optional dif_config_msg conf = 12; -        optional sint32 fd           = 13; -        optional sint32 api          = 14; -        optional sint32 response     = 15; -        optional sint32 result       = 16; +        repeated string dif_names    =  3; +        optional int32  len          =  4; +        optional string name         =  5; +        optional sint32 port_id      =  6; +        optional string dst_name     =  7; +        optional string src_ap_name  =  8; +        optional string src_ae_name  =  9; +        optional sint32 qos_cube     = 10; +        optional dif_config_msg conf = 11; +        optional sint32 fd           = 12; +        optional sint32 api          = 13; +        optional sint32 response     = 14; +        optional sint32 result       = 15;  }; | 
