From fdb523a02680f5aa0727b862f0616ba5f8cb24cf Mon Sep 17 00:00:00 2001 From: Jordan Augé Date: Tue, 12 Nov 2019 00:03:08 +0100 Subject: [HICN-386] Improve API error management in libhicnctrl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I332e74ebcd89798c93de50ae7a20f7af8f59f54c Signed-off-by: Jordan Augé --- ctrl/libhicnctrl/examples/Makefile | 2 +- ctrl/libhicnctrl/examples/create_face.c | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'ctrl/libhicnctrl/examples') diff --git a/ctrl/libhicnctrl/examples/Makefile b/ctrl/libhicnctrl/examples/Makefile index a6c6f0570..641936f4f 100644 --- a/ctrl/libhicnctrl/examples/Makefile +++ b/ctrl/libhicnctrl/examples/Makefile @@ -1,7 +1,7 @@ EXEC = $(shell basename $$(pwd)) CC = gcc -CFLAGS = -std=gnu11 -O3 -Wall -Wextra -Wpedantic -Wstrict-aliasing -DWITH_POLICY=1 +CFLAGS = -std=gnu11 -g -Wall -Wextra -Wpedantic -Wstrict-aliasing -DWITH_POLICY=1 LDFLAGS = -lhicn -lhicnctrl SRC = $(wildcard *.c) diff --git a/ctrl/libhicnctrl/examples/create_face.c b/ctrl/libhicnctrl/examples/create_face.c index 270ceeab9..dcacaeff1 100644 --- a/ctrl/libhicnctrl/examples/create_face.c +++ b/ctrl/libhicnctrl/examples/create_face.c @@ -52,12 +52,15 @@ int get_local_info(char * if_name, ip_address_t * local_ip) { snprintf(if_name, IFNAMSIZ, "%s", tmp->ifa_name); snprintf(ifr.ifr_name, IFNAMSIZ, "%s", tmp->ifa_name); - if (ioctl(fd, SIOCGIFADDR, &ifr) == 1) { - perror("ioctl"); + if (ioctl(fd, SIOCGIFADDR, &ifr) == -1) { + //perror("ioctl"); continue; } + *local_ip = IP_ADDRESS_EMPTY; local_ip->v4.as_inaddr = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr; + if (ip_address_empty(local_ip)) + continue; ret = 0; break; @@ -79,7 +82,7 @@ int main() { if (get_local_info(if_name, &local_ip) < 0) { DEBUG("Error getting local information"); - return -1; + goto ERR_INIT; } char local_ip_str[MAXSZ_IP_ADDRESS]; @@ -90,22 +93,26 @@ int main() { if (ip_address_pton (remote_ip_str, &remote_ip) < 0){ DEBUG("Error parsing remote IP address"); - return -1; + goto ERR_INIT; } /* Filling face information */ hc_face_t face = { .face = { .type = FACE_TYPE_UDP, + .family = AF_INET, .local_addr = local_ip, .remote_addr = remote_ip, .local_port = 6000, .remote_port = 6000, + .admin_state = FACE_STATE_UNDEFINED, + .state = FACE_STATE_UNDEFINED, + .tags = POLICY_TAGS_EMPTY, }, }; if (netdevice_set_name(&face.face.netdevice, if_name) < 0) { DEBUG("Error setting face netdevice name"); - return -1; + goto ERR_INIT; } /* Connecting to socket and creating face */ @@ -113,22 +120,24 @@ int main() { hc_sock_t * socket = hc_sock_create(); if (!socket){ DEBUG("Error creating libhicnctrl socket"); - return -1; + goto ERR_SOCK; } if (hc_sock_connect(socket) < 0){ DEBUG("Error connecting to forwarder"); - return -1; + goto ERR; } if (hc_face_create(socket, &face) < 0){ DEBUG("Error creating face"); - return -1; + goto ERR; } DEBUG("Face created successfully"); +ERR: hc_sock_free(socket); - +ERR_SOCK: +ERR_INIT: return 0; } -- cgit 1.2.3-korg