mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Merge branch 'master' into mq-page-alloc
This commit is contained in:
commit
f1065e3936
@ -14,6 +14,14 @@
|
|||||||
#include "lib/mac.h"
|
#include "lib/mac.h"
|
||||||
#include "lib/socket.h"
|
#include "lib/socket.h"
|
||||||
|
|
||||||
|
const char * const ospf_pkt_names[] = {
|
||||||
|
[HELLO_P] = "HELLO",
|
||||||
|
[DBDES_P] = "DBDES",
|
||||||
|
[LSREQ_P] = "LSREQ",
|
||||||
|
[LSUPD_P] = "LSUPD",
|
||||||
|
[LSACK_P] = "LSACK",
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type)
|
ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type)
|
||||||
{
|
{
|
||||||
@ -550,6 +558,10 @@ found:
|
|||||||
if (rid == 0)
|
if (rid == 0)
|
||||||
DROP1("zero router ID");
|
DROP1("zero router ID");
|
||||||
|
|
||||||
|
/* Check packet type here, ospf_pkt_checkauth3() expects valid values */
|
||||||
|
if (pkt->type < HELLO_P || pkt->type > LSACK_P)
|
||||||
|
DROP("invalid packet type", pkt->type);
|
||||||
|
|
||||||
/* In OSPFv2, neighbors are identified by either IP or Router ID, based on network type */
|
/* In OSPFv2, neighbors are identified by either IP or Router ID, based on network type */
|
||||||
uint t = ifa->type;
|
uint t = ifa->type;
|
||||||
struct ospf_neighbor *n;
|
struct ospf_neighbor *n;
|
||||||
@ -565,11 +577,15 @@ found:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check packet type here, ospf_pkt_checkauth3() expects valid values */
|
/* We need to ignore out-of-state packets before ospf_pkt_checkauth3() */
|
||||||
if (pkt->type < HELLO_P || pkt->type > LSACK_P)
|
if ((pkt->type > DBDES_P) && (n->state < NEIGHBOR_EXCHANGE))
|
||||||
DROP("invalid packet type", pkt->type);
|
{
|
||||||
|
OSPF_TRACE(D_PACKETS, "%s packet ignored - lesser state than Exchange",
|
||||||
|
ospf_pkt_names[pkt->type]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* ospf_pkt_checkauth() has its own error logging */
|
/* ospf_pkt_checkauthX() has its own error logging */
|
||||||
if ((ospf_is_v2(p) ?
|
if ((ospf_is_v2(p) ?
|
||||||
!ospf_pkt_checkauth2(n, ifa, pkt, len) :
|
!ospf_pkt_checkauth2(n, ifa, pkt, len) :
|
||||||
!ospf_pkt_checkauth3(n, ifa, pkt, len, sk->faddr)))
|
!ospf_pkt_checkauth3(n, ifa, pkt, len, sk->faddr)))
|
||||||
|
@ -335,7 +335,7 @@ ospf_originate_lsa(struct ospf_proto *p, struct ospf_new_lsa *lsa)
|
|||||||
* equal to 0 while sizeof(struct ospf_lsa_header) is non-zero.
|
* equal to 0 while sizeof(struct ospf_lsa_header) is non-zero.
|
||||||
* Therefore memcmp() is never executed with NULL here.
|
* Therefore memcmp() is never executed with NULL here.
|
||||||
* */
|
* */
|
||||||
ASSUME((en->lsa.length == 0) == (en->lsa_body == NULL));
|
ASSUME(en->lsa.age >= LSA_MAXAGE || (en->lsa.length == 0) == (en->lsa_body == NULL));
|
||||||
|
|
||||||
/* Ignore the the new LSA if is the same as the current one */
|
/* Ignore the the new LSA if is the same as the current one */
|
||||||
if ((en->lsa.age < LSA_MAXAGE) &&
|
if ((en->lsa.age < LSA_MAXAGE) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user