diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2021-07-20 10:12:04 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2021-07-20 10:12:04 -0400 | 
| commit | ecff5258a01beca71b50299a993372bdfd7b559a (patch) | |
| tree | d9ba387e1517620f34ff9192562857c65c0630bb /zebra/kernel_socket.c | |
| parent | 1dce93dabb078a02cf11c229fa67881fa101d463 (diff) | |
zebra: Mark some bsd interface prefixes as SECONDARY
Notice when a ip address on a bsd interface is considered
an alias, let's mark the connected prefix we generate as
a SECONDARY.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'zebra/kernel_socket.c')
| -rw-r--r-- | zebra/kernel_socket.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 252bf04782..5c060ac6f8 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -849,8 +849,8 @@ int ifam_read(struct ifa_msghdr *ifam)  	bool dest_same = false;  	char ifname[INTERFACE_NAMSIZ];  	short ifnlen = 0; -	char isalias = 0; -	int flags = 0; +	bool isalias = false; +	uint32_t flags = 0;  	ifname[0] = ifname[INTERFACE_NAMSIZ - 1] = '\0'; @@ -865,7 +865,13 @@ int ifam_read(struct ifa_msghdr *ifam)  	}  	if (ifnlen && strncmp(ifp->name, ifname, INTERFACE_NAMSIZ)) -		isalias = 1; +		isalias = true; + +	/* +	 * Mark the alias prefixes as secondary +	 */ +	if (isalias) +		SET_FLAG(flags, ZEBRA_IFA_SECONDARY);  	/* N.B. The info in ifa_msghdr does not tell us whether the RTA_BRD  	   field contains a broadcast address or a peer address, so we are  | 
