Merge pull request #7412 from donaldsharp/ospf6_stuff

Ospf6 stuff
This commit is contained in:
Mark Stapp 2020-10-29 14:57:27 -04:00 committed by GitHub
commit 5cc78f91b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 10 deletions

View File

@ -1701,7 +1701,7 @@ static void ospf6_send(struct in6_addr *src, struct in6_addr *dst,
/* send message */
if (oi->area->ospf6->fd != -1) {
len = ospf6_sendmsg(src, dst, &oi->interface->ifindex, iovector,
len = ospf6_sendmsg(src, dst, oi->interface->ifindex, iovector,
oi->area->ospf6->fd);
if (len != ntohs(oh->length))
flog_err(EC_LIB_DEVELOPMENT,

View File

@ -171,7 +171,7 @@ static int iov_totallen(struct iovec *iov)
}
int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
ifindex_t *ifindex, struct iovec *message, int ospf6_sock)
ifindex_t ifindex, struct iovec *message, int ospf6_sock)
{
int retval;
struct msghdr smsghdr;
@ -184,7 +184,6 @@ int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
struct sockaddr_in6 dst_sin6;
assert(dst);
assert(*ifindex);
memset(&cmsgbuf, 0, sizeof(cmsgbuf));
scmsgp = (struct cmsghdr *)&cmsgbuf;
@ -192,7 +191,7 @@ int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
memset(&dst_sin6, 0, sizeof(struct sockaddr_in6));
/* source address */
pktinfo->ipi6_ifindex = *ifindex;
pktinfo->ipi6_ifindex = ifindex;
if (src)
memcpy(&pktinfo->ipi6_addr, src, sizeof(struct in6_addr));
else
@ -204,7 +203,7 @@ int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
dst_sin6.sin6_len = sizeof(struct sockaddr_in6);
#endif /*SIN6_LEN*/
memcpy(&dst_sin6.sin6_addr, dst, sizeof(struct in6_addr));
dst_sin6.sin6_scope_id = *ifindex;
dst_sin6.sin6_scope_id = ifindex;
/* send control msg */
scmsgp->cmsg_level = IPPROTO_IPV6;
@ -223,7 +222,8 @@ int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
retval = sendmsg(ospf6_sock, &smsghdr, 0);
if (retval != iov_totallen(message))
zlog_warn("sendmsg failed: ifindex: %d: %s (%d)", *ifindex,
zlog_warn("sendmsg failed: source: %pI6 Dest: %pI6 ifindex: %d: %s (%d)",
src, dst, ifindex,
safe_strerror(errno), errno);
return retval;

View File

@ -28,9 +28,11 @@ extern int ospf6_serv_sock(struct ospf6 *ospf6);
extern void ospf6_serv_close(int *ospf6_sock);
extern int ospf6_sso(ifindex_t ifindex, struct in6_addr *group, int option);
extern int ospf6_sendmsg(struct in6_addr *, struct in6_addr *, ifindex_t *,
struct iovec *, int ospf6_sock);
extern int ospf6_recvmsg(struct in6_addr *, struct in6_addr *, ifindex_t *,
struct iovec *, int ospf6_sock);
extern int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
ifindex_t ifindex, struct iovec *message,
int ospf6_sock);
extern int ospf6_recvmsg(struct in6_addr *src, struct in6_addr *dst,
ifindex_t *ifindex, struct iovec *message,
int ospf6_sock);
#endif /* OSPF6_NETWORK_H */