diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipcpd/ipcp.c | 73 | ||||
| -rw-r--r-- | src/ipcpd/ipcp.h | 1 | ||||
| -rw-r--r-- | src/ipcpd/shim-udp/main.c | 7 | 
3 files changed, 62 insertions, 19 deletions
| diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index a1276769..0b652ff6 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -29,6 +29,23 @@  #define OUROBOROS_PREFIX "ipcpd/ipcp"  #include <ouroboros/logs.h> +int ipcp_arg_check(int argc, char * argv[]) +{ +        if (argc != 4) +                return -1; + +        /* argument 1: pid of irmd */ +        if (atoi(argv[1]) == 0) +                return -1; + +        /* name conformity responsibility of NMS */ + +        /* argument 2: ap name */ +        /* argument 3: instance id */ + +        return 0; +} +  int ipcp_main_loop(struct ipcp * _ipcp)  {          int     lsockfd; @@ -78,6 +95,10 @@ int ipcp_main_loop(struct ipcp * _ipcp)                  switch (msg->code) {                  case IPCP_MSG_CODE__IPCP_BOOTSTRAP: +                        if (_ipcp->ops->ipcp_bootstrap == NULL) { +                                LOG_ERR("Bootstrap unsupported."); +                                break; +                        }                          conf_msg = msg->conf;                          conf.type = conf_msg->ipcp_type;                          if (conf_msg->ipcp_type == IPCP_NORMAL) { @@ -102,45 +123,57 @@ int ipcp_main_loop(struct ipcp * _ipcp)                          break;                  case IPCP_MSG_CODE__IPCP_ENROLL:                          if (_ipcp->ops->ipcp_enroll == NULL) { -                                LOG_ERR("ipcp_enroll unsupported."); -                        } else { -                                ret_msg.has_result = true; -                                ret_msg.result = _ipcp->ops->ipcp_enroll( -                                        msg->member_name, msg->n_1_dif); +                                LOG_ERR("Enroll unsupported."); +                                break;                          } +                        ret_msg.has_result = true; +                        ret_msg.result = _ipcp->ops->ipcp_enroll( +                                msg->member_name, msg->n_1_dif); +                          break;                  case IPCP_MSG_CODE__IPCP_REG:                          if (_ipcp->ops->ipcp_reg == NULL) { -                                LOG_ERR("ipcp_reg unsupported."); +                                LOG_ERR("Reg unsupported."); +                                break; -                        } else { -                                ret_msg.has_result = true; -                                ret_msg.result = _ipcp->ops->ipcp_reg( -                                        msg->dif_names, msg->len);                          } +                        ret_msg.has_result = true; +                        ret_msg.result = _ipcp->ops->ipcp_reg( +                                msg->dif_names, msg->len);                          break;                  case IPCP_MSG_CODE__IPCP_UNREG:                          if (_ipcp->ops->ipcp_unreg == NULL) { -                                LOG_ERR("ipcp_unreg unsupported."); - -                        } else { -                                ret_msg.has_result = true; -                                ret_msg.result = _ipcp->ops->ipcp_unreg( -                                        msg->dif_names, msg->len); +                                LOG_ERR("Unreg unsupported."); +                                break;                          } +                        ret_msg.has_result = true; +                        ret_msg.result = _ipcp->ops->ipcp_unreg( +                                msg->dif_names, msg->len);                          break;                  case IPCP_MSG_CODE__IPCP_AP_REG: +                        if (_ipcp->ops->ipcp_ap_reg == NULL) { +                                LOG_ERR("Ap_reg unsupported."); +                                break; +                        }                          ret_msg.has_result = true;                          ret_msg.result = _ipcp->ops->ipcp_ap_reg(                                  msg->ap_name, msg->reg_ap_id);                          break;                  case IPCP_MSG_CODE__IPCP_AP_UNREG: +                        if (_ipcp->ops->ipcp_ap_unreg == NULL) { +                                LOG_ERR("Ap_unreg unsupported."); +                                break; +                        }                          ret_msg.has_result = true;                          ret_msg.result = _ipcp->ops->ipcp_ap_unreg(                                  msg->reg_ap_id);                          break;                  case IPCP_MSG_CODE__IPCP_FLOW_ALLOC: +                        if (_ipcp->ops->ipcp_flow_alloc == NULL) { +                                LOG_ERR("Flow_alloc unsupported."); +                                break; +                        }                          ret_msg.has_result = true;                          ret_msg.result = _ipcp->ops->ipcp_flow_alloc(                                  msg->port_id, @@ -150,11 +183,19 @@ int ipcp_main_loop(struct ipcp * _ipcp)                                  NULL);                          break;                  case IPCP_MSG_CODE__IPCP_FLOW_ALLOC_RESP: +                        if (_ipcp->ops->ipcp_flow_alloc_resp == NULL) { +                                LOG_ERR("Flow_alloc_resp unsupported."); +                                break; +                        }                          ret_msg.has_result = true;                          ret_msg.result = _ipcp->ops->ipcp_flow_alloc_resp(                                  msg->port_id, msg->result);                          break;                  case IPCP_MSG_CODE__IPCP_FLOW_DEALLOC: +                        if (_ipcp->ops->ipcp_flow_dealloc == NULL) { +                                LOG_ERR("Flow_dealloc unsupported."); +                                break; +                        }                          ret_msg.has_result = true;                          ret_msg.result = _ipcp->ops->ipcp_flow_dealloc(                                  msg->port_id); diff --git a/src/ipcpd/ipcp.h b/src/ipcpd/ipcp.h index d6ddeb43..9decac8b 100644 --- a/src/ipcpd/ipcp.h +++ b/src/ipcpd/ipcp.h @@ -44,5 +44,6 @@ struct ipcp {  };  int ipcp_main_loop(); +int ipcp_arg_check(int argc, char * argv[]);  #endif diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c index 1fb12dc0..45620ee9 100644 --- a/src/ipcpd/shim-udp/main.c +++ b/src/ipcpd/shim-udp/main.c @@ -291,9 +291,10 @@ int main (int argc, char * argv[])          /* argument 3: instance id */          struct sigaction sig_act; -        /* FIXME: clean up argument checks */ -        if (argc != 4) -                LOG_ERR("Wrong arguments passed."); +        if (ipcp_arg_check(argc, argv)) { +                LOG_ERR("Wrong arguments."); +                exit(1); +        }          /* store the process id of the irmd */          irmd_pid = atoi(argv[1]); | 
