diff --git a/README.md b/README.md index 4a741f5..3ce8893 100644 --- a/README.md +++ b/README.md @@ -269,6 +269,25 @@ status data, not deploying configurations. Many other systems exist as well. +### irrpt_objgrpgen + + $ bin/irrpt_objgrpgen -h + Usage: bin/irrpt_objgrpgen [-h46] [-p pfxstr] [-p6 pfxstr_v6] [-f format] + pfxstr - The prefix-list name format string (default: CUSTOMER:%d) + pfxstr_v6 - The prefix-list name format string (default: CUSTOMERv6:%d) + format - The output format for a specific router type (default: cisco) + Currently supported values are: + ciscoxr + +Examples: + + $ bin/irrpt_objgrpgen -f ciscoxr 42 + ... + +Similar to the "pfxgen" tool, this generates router configuration for security +object groups which are suitable for inclusion in an anti-spoofing access +control list. Currently only Cisco XR is supported. + ### irrpt_list_prefixes Show prefixes for a given AS or AS-SET, in unaggregated or aggregated form. diff --git a/bin/irrpt_objgrpgen b/bin/irrpt_objgrpgen new file mode 100755 index 0000000..cff1028 --- /dev/null +++ b/bin/irrpt_objgrpgen @@ -0,0 +1,97 @@ +#!/usr/bin/env php +\n", + $progname); + printf(" grpstr - The object-group name format string (default: %s)\n", $o_grpstr); + printf(" grpstr_v6 - The object-group name format string (default: %s)\n", $o_grpstr_v6); + printf(" format - The output format for a specific router type (default: %s)\n", $o_format); + printf(" Currently supported values are:\n"); + printf(" ciscoxr\n"); + exit(1); +} + + +/* Parse through the cmdline options. */ +for ($offset = 1; $offset < $_SERVER['argc']; $offset++) { + if (substr($_SERVER['argv'][$offset], 0, 1) != "-") + break; + + switch($_SERVER['argv'][$offset]) { + case "-h": + case "--help": + usage($_SERVER['argv'][0]); + + case "-p": + case "--grpstr": + $o_grpstr = $_SERVER['argv'][++$offset]; + break; + + case "-p6": + case "--grpstr_v6": + $o_grpstr_v6 = $_SERVER['argv'][++$offset]; + break; + + case "-4": + case "--4": + $o_4 = 1; + break; + + case "-6": + case "--6": + $o_6 = 1; + break; + + case "-f": + case "--format": + switch (strtolower($_SERVER['argv'][++$offset])) { + case "ciscoxr": + case "iosxr": + $o_format = "iosxr"; + break; + + default: + printf("Unknown format, aborting.\n"); + exit(1); + } + + break; + + } +} + +/* Check for minimum number of args after cmdline */ +if (($_SERVER['argc'] - $offset) < 1) + usage($_SERVER['argv'][0]); + +$asn = $_SERVER['argv'][$offset+0]; + + +if (objgrp_generate($o_format, $asn, $o_grpstr, $o_grpstr_v6, $o_4, $o_6) < 0) { + printf("Error generating prefix-list, aborting.\n"); + exit(1); +} + +?> diff --git a/conf/irrpt.conf b/conf/irrpt.conf index 0317751..44d30e9 100644 --- a/conf/irrpt.conf +++ b/conf/irrpt.conf @@ -55,6 +55,10 @@ $cfg['pfxgen']['default_pfxlen'] = "24"; $cfg['pfxgen']['default_pfxlen_v6'] = "48"; $cfg['pfxgen']['default_format'] = "cisco"; +$cfg['objgrpgen']['default_grpstr'] = "CUSTOMER:%d"; +$cfg['objgrpgen']['default_grpstr_v6'] = "CUSTOMERv6:%d"; +$cfg['objgrpgen']['default_format'] = "ciscoxr"; + $cfg['update']['from'] = "eng@yourcompany.com"; $cfg['update']['reply-to'] = "eng@yourcompany.com"; $cfg['update']['subject'] = "[IRRPT] "; diff --git a/inc/objgrp.inc b/inc/objgrp.inc new file mode 100644 index 0000000..bad78e9 --- /dev/null +++ b/inc/objgrp.inc @@ -0,0 +1,106 @@ +