Allows to set instance ID for OSPFv3 interfaces.
This commit is contained in:
parent
47c447c42e
commit
0ec031f740
2 changed files with 32 additions and 12 deletions
|
@ -1811,7 +1811,7 @@ protocol ospf <name> {
|
||||||
summary <switch>;
|
summary <switch>;
|
||||||
cost <num>;
|
cost <num>;
|
||||||
}
|
}
|
||||||
interface <interface pattern> {
|
interface <interface pattern> [instance <num>] {
|
||||||
cost <num>;
|
cost <num>;
|
||||||
stub <switch>;
|
stub <switch>;
|
||||||
hello <num>;
|
hello <num>;
|
||||||
|
@ -1841,7 +1841,7 @@ protocol ospf <name> {
|
||||||
<ip> eligible;
|
<ip> eligible;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
virtual link <id> {
|
virtual link <id> [instance <num>] {
|
||||||
hello <num>;
|
hello <num>;
|
||||||
retransmit <num>;
|
retransmit <num>;
|
||||||
wait <num>;
|
wait <num>;
|
||||||
|
@ -1961,14 +1961,19 @@ protocol ospf <name> {
|
||||||
subnetworks of given stub network are suppressed. This might
|
subnetworks of given stub network are suppressed. This might
|
||||||
be used, for example, to aggregate generated stub networks.
|
be used, for example, to aggregate generated stub networks.
|
||||||
|
|
||||||
<tag>interface <M>pattern</M></tag>
|
<tag>interface <M>pattern</M> [instance <m/num/]</tag>
|
||||||
Defines that the specified interfaces belong to the area being defined.
|
Defines that the specified interfaces belong to the area being defined.
|
||||||
See <ref id="dsc-iface" name="interface"> common option for detailed description.
|
See <ref id="dsc-iface" name="interface"> common option for detailed description.
|
||||||
|
In OSPFv3, you can specify instance ID for that interface
|
||||||
|
description, so it is possible to have several instances of
|
||||||
|
that interface with different options or even in different areas.
|
||||||
|
|
||||||
<tag>virtual link <M>id</M></tag>
|
<tag>virtual link <M>id</M> [instance <m/num/]</tag>
|
||||||
Virtual link to router with the router id. Virtual link acts as a
|
Virtual link to router with the router id. Virtual link acts
|
||||||
point-to-point interface belonging to backbone. The actual area is
|
as a point-to-point interface belonging to backbone. The
|
||||||
used as transport area. This item cannot be in the backbone.
|
actual area is used as transport area. This item cannot be in
|
||||||
|
the backbone. In OSPFv3, you could also use several virtual
|
||||||
|
links to one destination with different instance IDs.
|
||||||
|
|
||||||
<tag>cost <M>num</M></tag>
|
<tag>cost <M>num</M></tag>
|
||||||
Specifies output cost (metric) of an interface. Default value is 10.
|
Specifies output cost (metric) of an interface. Default value is 10.
|
||||||
|
|
|
@ -107,7 +107,17 @@ static inline void
|
||||||
check_defcost(int cost)
|
check_defcost(int cost)
|
||||||
{
|
{
|
||||||
if ((cost <= 0) || (cost >= LSINFINITY))
|
if ((cost <= 0) || (cost >= LSINFINITY))
|
||||||
cf_error("Default cost must be in range 1-%d", LSINFINITY);
|
cf_error("Default cost must be in range 1-%d", LSINFINITY-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
set_instance_id(unsigned id)
|
||||||
|
{
|
||||||
|
#ifdef OSPFv3
|
||||||
|
OSPF_PATT->instance_id = id;
|
||||||
|
#else
|
||||||
|
cf_error("Instance ID requires OSPFv3");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CF_DECLS
|
CF_DECLS
|
||||||
|
@ -120,7 +130,7 @@ CF_KEYWORDS(NONE, SIMPLE, AUTHENTICATION, STRICT, CRYPTOGRAPHIC)
|
||||||
CF_KEYWORDS(ELIGIBLE, POLL, NETWORKS, HIDDEN, VIRTUAL, CHECK, LINK)
|
CF_KEYWORDS(ELIGIBLE, POLL, NETWORKS, HIDDEN, VIRTUAL, CHECK, LINK)
|
||||||
CF_KEYWORDS(RX, BUFFER, LARGE, NORMAL, STUBNET, HIDDEN, SUMMARY, TAG, EXTERNAL)
|
CF_KEYWORDS(RX, BUFFER, LARGE, NORMAL, STUBNET, HIDDEN, SUMMARY, TAG, EXTERNAL)
|
||||||
CF_KEYWORDS(WAIT, DELAY, LSADB, ECMP, LIMIT, WEIGHT, NSSA, TRANSLATOR, STABILITY)
|
CF_KEYWORDS(WAIT, DELAY, LSADB, ECMP, LIMIT, WEIGHT, NSSA, TRANSLATOR, STABILITY)
|
||||||
CF_KEYWORDS(GLOBAL, LSID, ROUTER, SELF)
|
CF_KEYWORDS(GLOBAL, LSID, ROUTER, SELF, INSTANCE)
|
||||||
|
|
||||||
%type <t> opttext
|
%type <t> opttext
|
||||||
%type <ld> lsadb_args
|
%type <ld> lsadb_args
|
||||||
|
@ -218,8 +228,8 @@ ospf_stubnet_item:
|
||||||
;
|
;
|
||||||
|
|
||||||
ospf_vlink:
|
ospf_vlink:
|
||||||
ospf_vlink_start '{' ospf_vlink_opts '}' { ospf_iface_finish(); }
|
ospf_vlink_start ospf_instance_id '{' ospf_vlink_opts '}' { ospf_iface_finish(); }
|
||||||
| ospf_vlink_start { ospf_iface_finish(); }
|
| ospf_vlink_start ospf_instance_id { ospf_iface_finish(); }
|
||||||
;
|
;
|
||||||
|
|
||||||
ospf_vlink_opts:
|
ospf_vlink_opts:
|
||||||
|
@ -364,6 +374,11 @@ ospf_iface_start:
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
ospf_instance_id:
|
||||||
|
/* empty */
|
||||||
|
| INSTANCE expr { set_instance_id($2); }
|
||||||
|
;
|
||||||
|
|
||||||
ospf_iface_opts:
|
ospf_iface_opts:
|
||||||
/* empty */
|
/* empty */
|
||||||
| ospf_iface_opts ospf_iface_item ';'
|
| ospf_iface_opts ospf_iface_item ';'
|
||||||
|
@ -375,7 +390,7 @@ ospf_iface_opt_list:
|
||||||
;
|
;
|
||||||
|
|
||||||
ospf_iface:
|
ospf_iface:
|
||||||
ospf_iface_start iface_patt_list ospf_iface_opt_list { ospf_iface_finish(); }
|
ospf_iface_start iface_patt_list ospf_instance_id ospf_iface_opt_list { ospf_iface_finish(); }
|
||||||
;
|
;
|
||||||
|
|
||||||
opttext:
|
opttext:
|
||||||
|
|
Loading…
Reference in a new issue