mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-02 09:23:31 +00:00
bgpd: justify checks for IPv4 class D/E
* lib/prefix.h * IPV4_CLASS_DE(): make consistent with counterpart macros * bgp_packet.c * bgp_open_receive(): test using macro instead of ">=" * bgp_route.c * bgp_update_rsclient(): idem * bgp_update_main(): idem
This commit is contained in:
parent
de5ccb9602
commit
733cd9e579
@ -1381,7 +1381,7 @@ bgp_open_receive (struct peer *peer, bgp_size_t size)
|
|||||||
|
|
||||||
/* remote router-id check. */
|
/* remote router-id check. */
|
||||||
if (remote_id.s_addr == 0
|
if (remote_id.s_addr == 0
|
||||||
|| ntohl (remote_id.s_addr) >= 0xe0000000
|
|| IPV4_CLASS_DE (ntohl (remote_id.s_addr))
|
||||||
|| ntohl (peer->local_id.s_addr) == ntohl (remote_id.s_addr))
|
|| ntohl (peer->local_id.s_addr) == ntohl (remote_id.s_addr))
|
||||||
{
|
{
|
||||||
if (BGP_DEBUG (normal, NORMAL))
|
if (BGP_DEBUG (normal, NORMAL))
|
||||||
|
@ -1812,9 +1812,9 @@ bgp_update_rsclient (struct peer *rsclient, afi_t afi, safi_t safi,
|
|||||||
/* IPv4 unicast next hop check. */
|
/* IPv4 unicast next hop check. */
|
||||||
if (afi == AFI_IP && safi == SAFI_UNICAST)
|
if (afi == AFI_IP && safi == SAFI_UNICAST)
|
||||||
{
|
{
|
||||||
/* Next hop must not be 0.0.0.0 nor Class E address. */
|
/* Next hop must not be 0.0.0.0 nor Class D/E address. */
|
||||||
if (new_attr.nexthop.s_addr == 0
|
if (new_attr.nexthop.s_addr == 0
|
||||||
|| ntohl (new_attr.nexthop.s_addr) >= 0xe0000000)
|
|| IPV4_CLASS_DE (ntohl (new_attr.nexthop.s_addr)))
|
||||||
{
|
{
|
||||||
bgp_attr_unintern (&attr_new);
|
bgp_attr_unintern (&attr_new);
|
||||||
|
|
||||||
@ -2068,11 +2068,11 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
|
|||||||
goto filtered;
|
goto filtered;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Next hop must not be 0.0.0.0 nor Class E address. Next hop
|
/* Next hop must not be 0.0.0.0 nor Class D/E address. Next hop
|
||||||
must not be my own address. */
|
must not be my own address. */
|
||||||
if (bgp_nexthop_self (afi, &new_attr)
|
if (bgp_nexthop_self (afi, &new_attr)
|
||||||
|| new_attr.nexthop.s_addr == 0
|
|| new_attr.nexthop.s_addr == 0
|
||||||
|| ntohl (new_attr.nexthop.s_addr) >= 0xe0000000)
|
|| IPV4_CLASS_DE (ntohl (new_attr.nexthop.s_addr)))
|
||||||
{
|
{
|
||||||
reason = "martian next-hop;";
|
reason = "martian next-hop;";
|
||||||
goto filtered;
|
goto filtered;
|
||||||
|
@ -112,7 +112,7 @@ struct prefix_rd
|
|||||||
#define IPV4_NET0(a) ((((u_int32_t) (a)) & 0xff000000) == 0x00000000)
|
#define IPV4_NET0(a) ((((u_int32_t) (a)) & 0xff000000) == 0x00000000)
|
||||||
#define IPV4_NET127(a) ((((u_int32_t) (a)) & 0xff000000) == 0x7f000000)
|
#define IPV4_NET127(a) ((((u_int32_t) (a)) & 0xff000000) == 0x7f000000)
|
||||||
#define IPV4_LINKLOCAL(a) ((((u_int32_t) (a)) & 0xffff0000) == 0xa9fe0000)
|
#define IPV4_LINKLOCAL(a) ((((u_int32_t) (a)) & 0xffff0000) == 0xa9fe0000)
|
||||||
#define IPV4_CLASS_DE(a) ((u_int32_t) (a) >= 0xe0000000)
|
#define IPV4_CLASS_DE(a) ((((u_int32_t) (a)) & 0xe0000000) == 0xe0000000)
|
||||||
|
|
||||||
/* Max bit/byte length of IPv6 address. */
|
/* Max bit/byte length of IPv6 address. */
|
||||||
#define IPV6_MAX_BYTELEN 16
|
#define IPV6_MAX_BYTELEN 16
|
||||||
|
Loading…
Reference in New Issue
Block a user