diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-06-25 15:38:31 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-07-31 16:36:40 +0200 |
commit | 67e423c2561a5a08ac7331de2ab264a270b238c9 (patch) | |
tree | 20c5541ac8327dcf27a05717485d47216d2d46a2 /openbsc/src/osmo-bsc_nat/bsc_nat_vty.c | |
parent | 3615a30d3d201e656ef24eda28f83bfff3468e39 (diff) |
nat: Implement a post-routing for the NAT software
* The post-routing is applied after the first re-writing. To do this
the new number is copied back into the called data structure.
* Add a testcase that goes from 0172 to 0049 and then back to 0049
using the post rule with a table lookup.
Diffstat (limited to 'openbsc/src/osmo-bsc_nat/bsc_nat_vty.c')
-rw-r--r-- | openbsc/src/osmo-bsc_nat/bsc_nat_vty.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c index 5404bfbba..0cac79470 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c @@ -127,6 +127,10 @@ static int config_write_nat(struct vty *vty) if (_nat->num_rewr_name) vty_out(vty, " number-rewrite %s%s", _nat->num_rewr_name, VTY_NEWLINE); + if (_nat->num_rewr_post_name) + vty_out(vty, " number-rewrite-post %s%s", + _nat->num_rewr_post_name, VTY_NEWLINE); + if (_nat->smsc_rewr_name) vty_out(vty, " rewrite-smsc addr %s%s", _nat->smsc_rewr_name, VTY_NEWLINE); @@ -570,6 +574,27 @@ DEFUN(cfg_nat_no_number_rewrite, return CMD_SUCCESS; } +DEFUN(cfg_nat_number_rewrite_post, + cfg_nat_number_rewrite_post_cmd, + "number-rewrite-post FILENAME", + "Set the file with post-routing rewriting rules.\n" "Filename") +{ + return replace_rules(_nat, &_nat->num_rewr_post_name, + &_nat->num_rewr_post, argv[0]); +} + +DEFUN(cfg_nat_no_number_rewrite_post, + cfg_nat_no_number_rewrite_post_cmd, + "no number-rewrite-post", + NO_STR "Set the file with post-routing rewriting rules.\n") +{ + talloc_free(_nat->num_rewr_post_name); + _nat->num_rewr_post_name = NULL; + + bsc_nat_num_rewr_entry_adapt(NULL, &_nat->num_rewr_post, NULL); + return CMD_SUCCESS; +} + DEFUN(cfg_nat_smsc_addr, cfg_nat_smsc_addr_cmd, "rewrite-smsc addr FILENAME", @@ -1183,6 +1208,8 @@ int bsc_nat_vty_init(struct bsc_nat *nat) /* number rewriting */ install_element(NAT_NODE, &cfg_nat_number_rewrite_cmd); install_element(NAT_NODE, &cfg_nat_no_number_rewrite_cmd); + install_element(NAT_NODE, &cfg_nat_number_rewrite_post_cmd); + install_element(NAT_NODE, &cfg_nat_no_number_rewrite_post_cmd); install_element(NAT_NODE, &cfg_nat_smsc_addr_cmd); install_element(NAT_NODE, &cfg_nat_smsc_tpdest_cmd); install_element(NAT_NODE, &cfg_nat_sms_clear_tpsrr_cmd); |