int output_tap_mod_register(struct mod_reg *mod) { static struct output_reg_info output_tap = { 0 }; output_tap.name = "tap"; output_tap.description = "Send packets to a virtual tap interface"; output_tap.mod = mod; output_tap.init = output_tap_init; output_tap.open = output_tap_open; output_tap.close = output_tap_close; output_tap.cleanup = output_tap_cleanup; static struct addon_plugin_pload_reg addon_tap = { 0 }; addon_tap.name = "tap"; addon_tap.mod = mod; addon_tap.open = output_tap_open; addon_tap.close = output_tap_close; static struct addon_pload_param_reg params[] = { { "ifname", "string" }, { "persistent", "bool" }, { "filter", "string" }, { 0 } }; addon_tap.pload_params = params; if (output_register(&output_tap) != POM_OK || addon_plugin_pload_register(&addon_tap) != POM_OK) { output_tap_mod_unregister(); return POM_ERR; } return POM_OK; }
int output_file_mod_register(struct mod_reg *mod) { static struct output_reg_info output_file = { 0 }; output_file.name = "file"; output_file.api_ver = OUTPUT_API_VER; output_file.mod = mod; output_file.init = output_file_init; output_file.open = output_file_open; output_file.close = output_file_close; output_file.cleanup = output_file_cleanup; static struct addon_plugin_pload_reg addon_file = { 0 }; addon_file.name = "file"; addon_file.mod = mod; addon_file.pload_open = addon_file_pload_open; addon_file.pload_write = output_file_pload_write; addon_file.pload_close = output_file_pload_close; static struct addon_pload_param_reg params[] = { { "filename", "string" }, { 0 } }; addon_file.pload_params = params; if (output_register(&output_file) != POM_OK || addon_plugin_pload_register(&addon_file) != POM_OK) { output_file_mod_unregister(); return POM_ERR; } return POM_OK; }