Skip to content

Commit

Permalink
[nozzle] decouple running pre-up.d/up.d/down.d/post-down.d from inter…
Browse files Browse the repository at this point in the history
…face status (part 4)

Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
  • Loading branch information
fabbione committed Apr 20, 2018
1 parent 6ef7482 commit 6f27580
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 108 deletions.
8 changes: 1 addition & 7 deletions libnozzle/libnozzle.c
Expand Up @@ -610,7 +610,7 @@ int nozzle_reset_mtu(nozzle_t nozzle, char **error_string)
return nozzle_set_mtu(nozzle, nozzle->default_mtu, error_string);
}

int nozzle_set_up(nozzle_t nozzle, char **error_preup, char **error_up)
int nozzle_set_up(nozzle_t nozzle)
{
int err = 0, savederrno = 0;
struct ifreq ifr;
Expand All @@ -627,12 +627,6 @@ int nozzle_set_up(nozzle_t nozzle, char **error_preup, char **error_up)
goto out_clean;
}

if ((nozzle->hasupdown) && ((!error_preup) || (!error_up))) {
savederrno = EINVAL;
err = -1;
goto out_clean;
}

if (nozzle->up) {
goto out_clean;
}
Expand Down
15 changes: 2 additions & 13 deletions libnozzle/libnozzle.h
Expand Up @@ -93,27 +93,16 @@ int nozzle_run_updown(const nozzle_t nozzle, uint8_t action, char **exec_string)

/**
* nozzle_set_up
* @brief equivalent of ifconfig up, executes pre-up.d up.d if configured
* @brief equivalent of ifconfig up
*
* nozzle - pointer to the nozzle struct
*
* error_preup - pointer to string pointer to record errors from executing pre-up.d
* when configured. The string is malloc'ed, the caller needs to free that
* buffer.
*
* error_up - pointer to string pointer to record errors from executing up.d
* when configured. The string is malloc'ed, the caller needs to free that
* buffer.
*
* @return
* 0 on success
* -1 on error and errno is set.
* error_preup / error_up are set to NULL if execution of external scripts
* is sucessful
* error_preup / error_up will contain strings recording the execution error.
*/

int nozzle_set_up(nozzle_t nozzle, char **error_preup, char **error_up);
int nozzle_set_up(nozzle_t nozzle);

/**
* nozzle_set_down
Expand Down
146 changes: 58 additions & 88 deletions libnozzle/tests/nozzle_test.c
Expand Up @@ -736,8 +736,6 @@ static int check_knet_up_down(void)
int err=0;
nozzle_t nozzle;
char *error_string = NULL;
char *error_preup = NULL, *error_up = NULL;
char *error_down = NULL, *error_postdown = NULL;

printf("Testing interface up/down\n");

Expand All @@ -750,17 +748,7 @@ static int check_knet_up_down(void)

printf("Put the interface up\n");

err = nozzle_set_up(nozzle, &error_preup, &error_up);
if (error_preup) {
printf("preup output: %s\n", error_preup);
free(error_preup);
error_preup = NULL;
}
if (error_up) {
printf("up output: %s\n", error_up);
free(error_up);
error_up = NULL;
}
err = nozzle_set_up(nozzle);
if (err < 0) {
printf("Unable to set interface up\n");
err = -1;
Expand Down Expand Up @@ -789,30 +777,12 @@ static int check_knet_up_down(void)

printf("Put the interface down\n");

err = nozzle_run_updown(nozzle, NOZZLE_DOWN, &error_down);
if (err) {
printf("nozzle_run_updown NOZZLE_DOWN error: %s\n", strerror(errno));
}
if (error_down) {
printf("down output: %s\n", error_down);
free(error_down);
error_down = NULL;
}
err = nozzle_set_down(nozzle);
if (err < 0) {
printf("Unable to put the interface down\n");
err = -1;
goto out_clean;
}
err = nozzle_run_updown(nozzle, NOZZLE_POSTDOWN, &error_postdown);
if (err) {
printf("nozzle_run_updown NOZZLE_POSTDOWN error: %s\n", strerror(errno));
}
if (error_postdown) {
printf("postdown output: %s\n", error_down);
free(error_down);
error_down = NULL;
}

memset(verifycmd, 0, sizeof(verifycmd));
snprintf(verifycmd, sizeof(verifycmd)-1,
Expand Down Expand Up @@ -847,48 +817,56 @@ static int check_knet_up_down(void)

printf("Put the interface up\n");

err = nozzle_set_up(nozzle, &error_preup, &error_up);
if (error_preup) {
printf("preup output: %s\n", error_preup);
free(error_preup);
error_preup = NULL;
err = nozzle_run_updown(nozzle, NOZZLE_PREUP, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_PREUP error: %s\n", strerror(errno));
}
if (error_up) {
printf("up output: %s\n", error_up);
free(error_up);
error_up = NULL;
if (error_string) {
printf("preup output: %s\n", error_string);
free(error_string);
error_string = NULL;
}
err = nozzle_set_up(nozzle);
if (err < 0) {
printf("Unable to set interface up\n");
printf("Unable to put the interface up\n");
err = -1;
goto out_clean;
}
err = nozzle_run_updown(nozzle, NOZZLE_UP, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_UP error: %s\n", strerror(errno));
}
if (error_string) {
printf("up output: %s\n", error_string);
free(error_string);
error_string = NULL;
}

printf("Put the interface down\n");

err = nozzle_run_updown(nozzle, NOZZLE_DOWN, &error_down);
err = nozzle_run_updown(nozzle, NOZZLE_DOWN, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_DOWN error: %s\n", strerror(errno));
}
if (error_down) {
printf("down output: %s\n", error_down);
free(error_down);
error_down = NULL;
if (error_string) {
printf("down output: %s\n", error_string);
free(error_string);
error_string = NULL;
}
err = nozzle_set_down(nozzle);
if (err < 0) {
printf("Unable to put the interface down\n");
err = -1;
goto out_clean;
}
err = nozzle_run_updown(nozzle, NOZZLE_POSTDOWN, &error_postdown);
err = nozzle_run_updown(nozzle, NOZZLE_POSTDOWN, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_POSTDOWN error: %s\n", strerror(errno));
}
if (error_postdown) {
printf("postdown output: %s\n", error_down);
free(error_down);
error_down = NULL;
if (error_string) {
printf("postdown output: %s\n", error_string);
free(error_string);
error_string = NULL;
}

nozzle_close(nozzle);
Expand All @@ -905,48 +883,56 @@ static int check_knet_up_down(void)

printf("Put the interface up\n");

err = nozzle_set_up(nozzle, &error_preup, &error_up);
if (error_preup) {
printf("preup output: %s\n", error_preup);
free(error_preup);
error_preup = NULL;
err = nozzle_run_updown(nozzle, NOZZLE_PREUP, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_PREUP error: %s\n", strerror(errno));
}
if (error_up) {
printf("up output: %s\n", error_up);
free(error_up);
error_up = NULL;
if (error_string) {
printf("preup output: %s\n", error_string);
free(error_string);
error_string = NULL;
}
err = nozzle_set_up(nozzle);
if (err < 0) {
printf("Unable to set interface up\n");
printf("Unable to put the interface up\n");
err = -1;
goto out_clean;
}
err = nozzle_run_updown(nozzle, NOZZLE_UP, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_UP error: %s\n", strerror(errno));
}
if (error_string) {
printf("up output: %s\n", error_string);
free(error_string);
error_string = NULL;
}

printf("Put the interface down\n");

err = nozzle_run_updown(nozzle, NOZZLE_DOWN, &error_down);
err = nozzle_run_updown(nozzle, NOZZLE_DOWN, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_DOWN error: %s\n", strerror(errno));
}
if (error_down) {
printf("down output: %s\n", error_down);
free(error_down);
error_down = NULL;
if (error_string) {
printf("down output: %s\n", error_string);
free(error_string);
error_string = NULL;
}
err = nozzle_set_down(nozzle);
if (err < 0) {
printf("Unable to put the interface down\n");
err = -1;
goto out_clean;
}
err = nozzle_run_updown(nozzle, NOZZLE_POSTDOWN, &error_postdown);
err = nozzle_run_updown(nozzle, NOZZLE_POSTDOWN, &error_string);
if (err) {
printf("nozzle_run_updown NOZZLE_POSTDOWN error: %s\n", strerror(errno));
}
if (error_postdown) {
printf("postdown output: %s\n", error_down);
free(error_down);
error_down = NULL;
if (error_string) {
printf("postdown output: %s\n", error_string);
free(error_string);
error_string = NULL;
}

nozzle_close(nozzle);
Expand All @@ -956,23 +942,7 @@ static int check_knet_up_down(void)
printf("Pass NULL to nozzle set_up\n");
err = 0;
errno = 0;
if ((nozzle_set_up(NULL, &error_preup, &error_up) >= 0) || (errno != EINVAL)) {
printf("Something is wrong in nozzle_set_up sanity checks\n");
err = -1;
goto out_clean;
}

printf("Pass NULL to error_preup set_up\n");
errno = 0;
if ((nozzle_set_up(nozzle, NULL, &error_up) >= 0) || (errno != EINVAL)) {
printf("Something is wrong in nozzle_set_up sanity checks\n");
err = -1;
goto out_clean;
}

printf("Pass NULL to error_up set_up\n");
errno = 0;
if ((nozzle_set_up(nozzle, &error_preup, NULL) >= 0) || (errno != EINVAL)) {
if ((nozzle_set_up(NULL) >= 0) || (errno != EINVAL)) {
printf("Something is wrong in nozzle_set_up sanity checks\n");
err = -1;
goto out_clean;
Expand Down

0 comments on commit 6f27580

Please sign in to comment.