lib: Return instead of exit in net
Alters internal spdk_process_new_interface_msg() function such that it returns a failure instead of exit()'ing. Change-Id: I31c5dd9db43449f81dbb0f581258476a58aa8000 Signed-off-by: Lance Hartmann <lance.hartmann@oracle.com> Reviewed-on: https://review.gerrithub.io/402165 Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
627bee96a4
commit
9364bee419
@ -46,7 +46,7 @@ static TAILQ_HEAD(, spdk_interface) g_interface_head;
|
|||||||
|
|
||||||
static pthread_mutex_t interface_lock = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t interface_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
static uint32_t spdk_get_ifc_ipv4(void)
|
static int spdk_get_ifc_ipv4(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int rtattrlen;
|
int rtattrlen;
|
||||||
@ -154,7 +154,7 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void spdk_process_new_interface_msg(struct nlmsghdr *h)
|
static int spdk_process_new_interface_msg(struct nlmsghdr *h)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
struct spdk_interface *ifc;
|
struct spdk_interface *ifc;
|
||||||
@ -166,7 +166,7 @@ static void spdk_process_new_interface_msg(struct nlmsghdr *h)
|
|||||||
ifc = (struct spdk_interface *) malloc(sizeof(*ifc));
|
ifc = (struct spdk_interface *) malloc(sizeof(*ifc));
|
||||||
if (ifc == NULL) {
|
if (ifc == NULL) {
|
||||||
SPDK_ERRLOG("%s: Malloc failed\n", __func__);
|
SPDK_ERRLOG("%s: Malloc failed\n", __func__);
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(ifc, 0, sizeof(*ifc));
|
memset(ifc, 0, sizeof(*ifc));
|
||||||
@ -182,7 +182,8 @@ static void spdk_process_new_interface_msg(struct nlmsghdr *h)
|
|||||||
case IFLA_IFNAME:
|
case IFLA_IFNAME:
|
||||||
if (if_indextoname(iface->ifi_index, ifc->name) == NULL) {
|
if (if_indextoname(iface->ifi_index, ifc->name) == NULL) {
|
||||||
SPDK_ERRLOG("Indextoname failed!\n");
|
SPDK_ERRLOG("Indextoname failed!\n");
|
||||||
exit(1);
|
free(ifc);
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -190,11 +191,12 @@ static void spdk_process_new_interface_msg(struct nlmsghdr *h)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
TAILQ_INSERT_TAIL(&g_interface_head, ifc, tailq);
|
TAILQ_INSERT_TAIL(&g_interface_head, ifc, tailq);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t spdk_prepare_ifc_list(void)
|
static int spdk_prepare_ifc_list(void)
|
||||||
{
|
{
|
||||||
uint32_t ret = 0;
|
int ret = 0;
|
||||||
struct nl_req_s {
|
struct nl_req_s {
|
||||||
struct nlmsghdr hdr;
|
struct nlmsghdr hdr;
|
||||||
struct rtgenmsg gen;
|
struct rtgenmsg gen;
|
||||||
@ -284,7 +286,10 @@ static uint32_t spdk_prepare_ifc_list(void)
|
|||||||
end++;
|
end++;
|
||||||
break;
|
break;
|
||||||
case RTM_NEWLINK: /* This is a RTM_NEWLINK message, which contains lots of information about a link */
|
case RTM_NEWLINK: /* This is a RTM_NEWLINK message, which contains lots of information about a link */
|
||||||
spdk_process_new_interface_msg(msg_ptr);
|
ret = spdk_process_new_interface_msg(msg_ptr);
|
||||||
|
if (ret != 0) {
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -417,11 +422,15 @@ static void spdk_interface_ip_update(void)
|
|||||||
int
|
int
|
||||||
spdk_interface_init(void)
|
spdk_interface_init(void)
|
||||||
{
|
{
|
||||||
TAILQ_INIT(&g_interface_head);
|
int rc = 0;
|
||||||
spdk_prepare_ifc_list();
|
|
||||||
spdk_get_ifc_ipv4();
|
|
||||||
|
|
||||||
return 0;
|
TAILQ_INIT(&g_interface_head);
|
||||||
|
rc = spdk_prepare_ifc_list();
|
||||||
|
if (!rc) {
|
||||||
|
rc = spdk_get_ifc_ipv4();
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user