diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2019-03-03 19:08:48 +0100 | 
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2019-03-04 08:57:57 +0100 | 
| commit | e87f2b683446fe424dc5e8fed60456240e080562 (patch) | |
| tree | f61d89c35ded13d743e207b31ce68546ca53d9e1 /src/ipcpd/udp | |
| parent | e00c9b13acad23e14df9d5cf4c7868dfd6e1bc55 (diff) | |
| download | ouroboros-e87f2b683446fe424dc5e8fed60456240e080562.tar.gz ouroboros-e87f2b683446fe424dc5e8fed60456240e080562.zip | |
ipcpd: Refactor create_r and flow_req_arr
The API calls for the IPCP to inform the IRMd of IPCP creation and
incoming flow request had the pid_t in the call. This pid_t is removed
and the getpid() call is now placed inside the function. Also
refactors the cleanup for the main() functions of some of the lower
IPCPs.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/udp')
| -rw-r--r-- | src/ipcpd/udp/main.c | 35 | 
1 files changed, 17 insertions, 18 deletions
| diff --git a/src/ipcpd/udp/main.c b/src/ipcpd/udp/main.c index 457dc789..f45a18cb 100644 --- a/src/ipcpd/udp/main.c +++ b/src/ipcpd/udp/main.c @@ -344,7 +344,7 @@ static int ipcp_udp_port_req(struct sockaddr_in * c_saddr,          }          /* reply to IRM */ -        fd = ipcp_flow_req_arr(getpid(), dst, ipcp_dir_hash_len(), qs); +        fd = ipcp_flow_req_arr(dst, ipcp_dir_hash_len(), qs);          if (fd < 0) {                  pthread_mutex_unlock(&ipcpi.alloc_lock);                  log_err("Could not get new flow from IRMd."); @@ -1191,33 +1191,22 @@ static struct ipcp_ops udp_ops = {  int main(int    argc,           char * argv[])  { -        if (ipcp_init(argc, argv, &udp_ops) < 0) { -                ipcp_create_r(getpid(), -1); -                exit(EXIT_FAILURE); -        } +        if (ipcp_init(argc, argv, &udp_ops) < 0) +                goto fail_init;          if (udp_data_init() < 0) {                  log_err("Failed to init udp data."); -                ipcp_create_r(getpid(), -1); -                ipcp_fini(); -                exit(EXIT_FAILURE); +                goto fail_data_init;          }          if (ipcp_boot() < 0) {                  log_err("Failed to boot IPCP."); -                ipcp_create_r(getpid(), -1); -                udp_data_fini(); -                ipcp_fini(); -                exit(EXIT_FAILURE); +                goto fail_boot;          } -        if (ipcp_create_r(getpid(), 0)) { +        if (ipcp_create_r(0)) {                  log_err("Failed to notify IRMd we are initialized."); -                ipcp_set_state(IPCP_NULL); -                ipcp_shutdown(); -                udp_data_fini(); -                ipcp_fini(); -                exit(EXIT_FAILURE); +                goto fail_create_r;          }          ipcp_shutdown(); @@ -1237,4 +1226,14 @@ int main(int    argc,          ipcp_fini();          exit(EXIT_SUCCESS); + fail_create_r: +        ipcp_set_state(IPCP_NULL); +        ipcp_shutdown(); + fail_boot: +        udp_data_fini(); + fail_data_init: +        ipcp_fini(); + fail_init: +        ipcp_create_r(-1); +        exit(EXIT_FAILURE);  } | 
