int fw_cleanup(void) { int res, got_err = 0; zero_cmd_buffers(); if(fwc.active_set_num > 0 && ipfw_set_exists(fwc.fw_command, fwc.active_set_num)) { /* Create the set delete command for active rules */ snprintf(cmd_buf, CMD_BUFSIZE-1, "%s " IPFW_DEL_RULE_SET_ARGS, fwc.fw_command, fwc.active_set_num ); //printf("CMD: '%s'\n", cmd_buf); res = system(cmd_buf); /* Expect full success on this */ if(! EXTCMD_IS_SUCCESS(res)) { log_msg(LOG_ERR, "Error %i from cmd:'%s': %s", res, cmd_buf, err_buf); got_err++; } } /* --DSS Keep expired rule list so any existing established are not lost */ #if 0 if(fwc.expire_set_num > 0) { /* Create the set delete command for expired rules */ snprintf(cmd_buf, CMD_BUFSIZE-1, "%s " IPFW_DEL_RULE_SET_ARGS, fwc.fw_command, fwc.expire_set_num ); //printf("CMD: '%s'\n", cmd_buf); res = system(cmd_buf); /* Expect full success on this */ if(! EXTCMD_IS_SUCCESS(res)) { log_msg(LOG_ERR, "Error %i from cmd:'%s': %s", res, cmd_buf, err_buf); got_err++; } } #endif /* Free the rule map. */ if(fwc.rule_map != NULL) free(fwc.rule_map); return(got_err); }
int fw_cleanup(const fko_srv_options_t *opts) { int res, got_err = 0; if(strncasecmp(opts->config[CONF_FLUSH_IPFW_AT_EXIT], "N", 1) == 0) { if(fwc.rule_map != NULL) free(fwc.rule_map); return(0); } zero_cmd_buffers(); if(fwc.active_set_num > 0 && ipfw_set_exists(opts, fwc.fw_command, fwc.active_set_num)) { /* Create the set delete command for active rules */ snprintf(cmd_buf, CMD_BUFSIZE-1, "%s " IPFW_DEL_RULE_SET_ARGS, fwc.fw_command, fwc.active_set_num ); res = system(cmd_buf); if (opts->verbose) log_msg(LOG_INFO, "fw_cleanup() CMD: '%s' (res: %d)", cmd_buf, res); /* Expect full success on this */ if(! EXTCMD_IS_SUCCESS(res)) { log_msg(LOG_ERR, "Error %i from cmd:'%s': %s", res, cmd_buf, err_buf); got_err++; } } /* --DSS Keep expired rule list so any existing established are not lost */ #if 0 if(fwc.expire_set_num > 0) { /* Create the set delete command for expired rules */ snprintf(cmd_buf, CMD_BUFSIZE-1, "%s " IPFW_DEL_RULE_SET_ARGS, fwc.fw_command, fwc.expire_set_num ); //printf("CMD: '%s'\n", cmd_buf); res = system(cmd_buf); /* Expect full success on this */ if(! EXTCMD_IS_SUCCESS(res)) { log_msg(LOG_ERR, "Error %i from cmd:'%s': %s", res, cmd_buf, err_buf); got_err++; } } #endif /* Free the rule map. */ if(fwc.rule_map != NULL) free(fwc.rule_map); return(got_err); }