12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include <stdio.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <string.h>
- #include <iptables.h>
- #include "iptables-multi.h"
- int
- iptables_main(int argc, char *argv[])
- {
- int ret;
- char *table = "filter";
- struct xtc_handle *handle = NULL;
- iptables_globals.program_name = "iptables";
- ret = xtables_init_all(&iptables_globals, NFPROTO_IPV4);
- if (ret < 0) {
- fprintf(stderr, "%s/%s Failed to initialize xtables\n",
- iptables_globals.program_name,
- iptables_globals.program_version);
- exit(1);
- }
- #if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
- init_extensions();
- init_extensions4();
- #endif
- ret = do_command4(argc, argv, &table, &handle);
- if (ret) {
- ret = iptc_commit(handle);
- iptc_free(handle);
- }
- if (!ret) {
- if (errno == EINVAL) {
- fprintf(stderr, "iptables: %s. "
- "Run `dmesg' for more information.\n",
- iptc_strerror(errno));
- } else {
- fprintf(stderr, "iptables: %s.\n",
- iptc_strerror(errno));
- }
- if (errno == EAGAIN) {
- exit(RESOURCE_PROBLEM);
- }
- }
- exit(!ret);
- }
|