ospfd: remember area-id format for ifaces

Display dotted quad or decimal back in the config depending on what the
user enters.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2017-08-15 16:47:02 -04:00
parent 0dac59e943
commit 5ed0add5e4
No known key found for this signature in database
GPG Key ID: DAF48E0F57E0834F
2 changed files with 10 additions and 2 deletions

View File

@ -66,6 +66,8 @@ struct ospf_if_params {
DECLARE_IF_PARAM(u_char, priority); /* OSPF Interface priority */
/* Enable OSPF on this interface with area if_area */
DECLARE_IF_PARAM(struct in_addr, if_area);
u_int32_t if_area_id_fmt;
DECLARE_IF_PARAM(u_char, type); /* type of interface */
#define OSPF_IF_ACTIVE 0
#define OSPF_IF_PASSIVE 1

View File

@ -6971,6 +6971,7 @@ DEFUN (ip_ospf_area,
/* enable ospf on this interface with area_id */
SET_IF_PARAM(params, if_area);
params->if_area = area_id;
params->if_area_id_fmt = format;
ospf_interface_area_set(ifp);
ospf->if_ospf_cli_count++;
@ -8312,8 +8313,13 @@ static int config_write_interface(struct vty *vty)
else
vty_out(vty, " ip ospf");
vty_out(vty, " area %s",
inet_ntoa(params->if_area));
size_t buflen = MAX(strlen("4294967295"),
strlen("255.255.255.255"));
char buf[buflen];
area_id2str(buf, sizeof(buf), &params->if_area,
params->if_area_id_fmt);
vty_out(vty, " area %s", buf);
if (params != IF_DEF_PARAMS(ifp))
vty_out(vty, " %s",
inet_ntoa(rn->p.u.prefix4));