summaryrefslogtreecommitdiff
path: root/pimd/pim_assert.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-09-10 10:53:15 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-09-10 10:53:15 -0400
commitf0ce8ac3e19d0c4e42323dde8d5db0d069ec99e2 (patch)
tree32b579e0a51721ef1fde22daf5dffad9fcc65f35 /pimd/pim_assert.c
parente6dafed0e261c6582d81d4c9d8f2e4844aff4448 (diff)
pimd: Slightly loosen pim assert message length tests
The Pim RFC does not appear to state any length requirements of pim, other than the checksum must be correct. Certain vendors are sending extra data at the end of a pim assert message. This while not explicitly against the rules was a bit of surprise to pim when we threw the assert message on the floor for being too long. Modify the test to see if length left will allow us to read the 8 bytes of data that we need. If it is sufficient for that allow the packet to be used. Fixes: #4957 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_assert.c')
-rw-r--r--pimd/pim_assert.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 3aa2a92241..53ab22754c 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -259,11 +259,11 @@ int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,
curr += offset;
curr_size -= offset;
- if (curr_size != 8) {
+ if (curr_size < 8) {
char src_str[INET_ADDRSTRLEN];
pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
zlog_warn(
- "%s: preference/metric size is not 8: size=%d from %s on interface %s",
+ "%s: preference/metric size is less than 8 bytes: size=%d from %s on interface %s",
__PRETTY_FUNCTION__, curr_size, src_str, ifp->name);
return -3;
}