diff options
| author | Donatas Abraitis <donatas.abraitis@gmail.com> | 2019-04-15 23:53:20 +0300 | 
|---|---|---|
| committer | Donatas Abraitis <donatas.abraitis@gmail.com> | 2019-04-24 14:51:06 +0300 | 
| commit | 513386b57f7bcced92dd05d24a3b25c8c743c825 (patch) | |
| tree | f623b3b6ac97883791e87a79024343e8e0cb3021 /bgpd/bgp_label.c | |
| parent | 3c7940063b40250354cccc6b582a81d10a5a4261 (diff) | |
bgpd: Do not send UPDATE message with maximum-prefix
When using maximum-prefix and count is overflow BGP
sends UPDATE message:
Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: 192.168.0.2 [Error] Error parsing NLRI
Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: %NOTIFICATION: sent to neighbor 192.168.0.2 3/10 (UPDATE Message Error/Invalid Network Field) 0 bytes
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
Diffstat (limited to 'bgpd/bgp_label.c')
| -rw-r--r-- | bgpd/bgp_label.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/bgpd/bgp_label.c b/bgpd/bgp_label.c index a219c407da..9511650842 100644 --- a/bgpd/bgp_label.c +++ b/bgpd/bgp_label.c @@ -355,7 +355,7 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,  			/* When packet overflow occurs return immediately. */  			if (pnt + BGP_ADDPATH_ID_LEN > lim) -				return -1; +				return BGP_NLRI_PARSE_ERROR_PACKET_OVERFLOW;  			addpath_id = ntohl(*((uint32_t *)pnt));  			pnt += BGP_ADDPATH_ID_LEN; @@ -372,7 +372,7 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,  				EC_BGP_UPDATE_RCV,  				"%s [Error] Update packet error / L-U (prefix length %d exceeds packet size %u)",  				peer->host, prefixlen, (uint)(lim - pnt)); -			return -1; +			return BGP_NLRI_PARSE_ERROR_PACKET_OVERFLOW;  		}  		/* Fill in the labels */ @@ -387,12 +387,12 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,  				 peer->host, prefixlen);  			bgp_notify_send(peer, BGP_NOTIFY_UPDATE_ERR,  					BGP_NOTIFY_UPDATE_INVAL_NETWORK); -			return -1; +			return BGP_NLRI_PARSE_ERROR_LABEL_LENGTH;  		}  		if ((afi == AFI_IP && p.prefixlen > 32)  		    || (afi == AFI_IP6 && p.prefixlen > 128)) -			return -1; +			return BGP_NLRI_PARSE_ERROR_PREFIX_LENGTH;  		/* Fetch prefix from NLRI packet */  		memcpy(&p.u.prefix, pnt + llen, psize - llen); @@ -463,8 +463,8 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,  			EC_BGP_UPDATE_RCV,  			"%s [Error] Update packet error / L-U (%zu data remaining after parsing)",  			peer->host, lim - pnt); -		return -1; +		return BGP_NLRI_PARSE_ERROR_PACKET_LENGTH;  	} -	return 0; +	return BGP_NLRI_PARSE_OK;  }  | 
