46
47
static const struct option multiport_opts[] = {
47
{ "source-ports", 1, NULL, '1' },
48
{ "sports", 1, NULL, '1' }, /* synonym */
49
{ "destination-ports", 1, NULL, '2' },
50
{ "dports", 1, NULL, '2' }, /* synonym */
51
{ "ports", 1, NULL, '3' },
48
{.name = "source-ports", .has_arg = true, .val = '1'},
49
{.name = "sports", .has_arg = true, .val = '1'}, /* synonym */
50
{.name = "destination-ports", .has_arg = true, .val = '2'},
51
{.name = "dports", .has_arg = true, .val = '2'}, /* synonym */
52
{.name = "ports", .has_arg = true, .val = '3'},
167
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
168
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
168
169
proto = check_proto(pnum, invflags);
169
multiinfo->count = parse_multi_ports(argv[optind-1],
170
multiinfo->count = parse_multi_ports(optarg,
170
171
multiinfo->ports, proto);
171
172
multiinfo->flags = XT_MULTIPORT_SOURCE;
175
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
176
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
176
177
proto = check_proto(pnum, invflags);
177
multiinfo->count = parse_multi_ports(argv[optind-1],
178
multiinfo->count = parse_multi_ports(optarg,
178
179
multiinfo->ports, proto);
179
180
multiinfo->flags = XT_MULTIPORT_DESTINATION;
183
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
184
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
184
185
proto = check_proto(pnum, invflags);
185
multiinfo->count = parse_multi_ports(argv[optind-1],
186
multiinfo->count = parse_multi_ports(optarg,
186
187
multiinfo->ports, proto);
187
188
multiinfo->flags = XT_MULTIPORT_EITHER;
234
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
235
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
235
236
proto = check_proto(pnum, invflags);
236
parse_multi_ports_v1(argv[optind-1], multiinfo, proto);
237
parse_multi_ports_v1(optarg, multiinfo, proto);
237
238
multiinfo->flags = XT_MULTIPORT_SOURCE;
241
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
242
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
242
243
proto = check_proto(pnum, invflags);
243
parse_multi_ports_v1(argv[optind-1], multiinfo, proto);
244
parse_multi_ports_v1(optarg, multiinfo, proto);
244
245
multiinfo->flags = XT_MULTIPORT_DESTINATION;
248
xtables_check_inverse(argv[optind-1], &invert, &optind, 0);
249
xtables_check_inverse(optarg, &invert, &optind, 0, argv);
249
250
proto = check_proto(pnum, invflags);
250
parse_multi_ports_v1(argv[optind-1], multiinfo, proto);
251
parse_multi_ports_v1(optarg, multiinfo, proto);
251
252
multiinfo->flags = XT_MULTIPORT_EITHER;
509
510
__multiport_save_v1(match, ip->proto);
512
static struct xtables_match multiport_match = {
513
.family = NFPROTO_IPV4,
516
.version = XTABLES_VERSION,
517
.size = XT_ALIGN(sizeof(struct xt_multiport)),
518
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport)),
519
.help = multiport_help,
520
.parse = multiport_parse,
521
.final_check = multiport_check,
522
.print = multiport_print,
523
.save = multiport_save,
524
.extra_opts = multiport_opts,
527
static struct xtables_match multiport_match6 = {
528
.family = NFPROTO_IPV6,
531
.version = XTABLES_VERSION,
532
.size = XT_ALIGN(sizeof(struct xt_multiport)),
533
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport)),
534
.help = multiport_help,
535
.parse = multiport_parse6,
536
.final_check = multiport_check,
537
.print = multiport_print6,
538
.save = multiport_save6,
539
.extra_opts = multiport_opts,
542
static struct xtables_match multiport_match_v1 = {
543
.family = NFPROTO_IPV4,
545
.version = XTABLES_VERSION,
547
.size = XT_ALIGN(sizeof(struct xt_multiport_v1)),
548
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport_v1)),
549
.help = multiport_help_v1,
550
.parse = multiport_parse_v1,
551
.final_check = multiport_check,
552
.print = multiport_print_v1,
553
.save = multiport_save_v1,
554
.extra_opts = multiport_opts,
557
static struct xtables_match multiport_match6_v1 = {
558
.family = NFPROTO_IPV6,
560
.version = XTABLES_VERSION,
562
.size = XT_ALIGN(sizeof(struct xt_multiport_v1)),
563
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport_v1)),
564
.help = multiport_help_v1,
565
.parse = multiport_parse6_v1,
566
.final_check = multiport_check,
567
.print = multiport_print6_v1,
568
.save = multiport_save6_v1,
569
.extra_opts = multiport_opts,
513
static struct xtables_match multiport_mt_reg[] = {
515
.family = NFPROTO_IPV4,
518
.version = XTABLES_VERSION,
519
.size = XT_ALIGN(sizeof(struct xt_multiport)),
520
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport)),
521
.help = multiport_help,
522
.parse = multiport_parse,
523
.final_check = multiport_check,
524
.print = multiport_print,
525
.save = multiport_save,
526
.extra_opts = multiport_opts,
529
.family = NFPROTO_IPV6,
532
.version = XTABLES_VERSION,
533
.size = XT_ALIGN(sizeof(struct xt_multiport)),
534
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport)),
535
.help = multiport_help,
536
.parse = multiport_parse6,
537
.final_check = multiport_check,
538
.print = multiport_print6,
539
.save = multiport_save6,
540
.extra_opts = multiport_opts,
543
.family = NFPROTO_IPV4,
545
.version = XTABLES_VERSION,
547
.size = XT_ALIGN(sizeof(struct xt_multiport_v1)),
548
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport_v1)),
549
.help = multiport_help_v1,
550
.parse = multiport_parse_v1,
551
.final_check = multiport_check,
552
.print = multiport_print_v1,
553
.save = multiport_save_v1,
554
.extra_opts = multiport_opts,
557
.family = NFPROTO_IPV6,
559
.version = XTABLES_VERSION,
561
.size = XT_ALIGN(sizeof(struct xt_multiport_v1)),
562
.userspacesize = XT_ALIGN(sizeof(struct xt_multiport_v1)),
563
.help = multiport_help_v1,
564
.parse = multiport_parse6_v1,
565
.final_check = multiport_check,
566
.print = multiport_print6_v1,
567
.save = multiport_save6_v1,
568
.extra_opts = multiport_opts,
575
xtables_register_match(&multiport_match);
576
xtables_register_match(&multiport_match6);
577
xtables_register_match(&multiport_match_v1);
578
xtables_register_match(&multiport_match6_v1);
575
xtables_register_matches(multiport_mt_reg, ARRAY_SIZE(multiport_mt_reg));