mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 07:37:29 +00:00
Merge pull request #2758 from donaldsharp/pim_join
lib and pim silliness
This commit is contained in:
commit
429a5ad722
@ -120,7 +120,6 @@ extern vrf_id_t vrf_name_to_id(const char *);
|
|||||||
} else { \
|
} else { \
|
||||||
vty_out(vty, "%% VRF %s not found\n", NAME); \
|
vty_out(vty, "%% VRF %s not found\n", NAME); \
|
||||||
} \
|
} \
|
||||||
vty_out(vty, "%% VRF %s not found\n", NAME); \
|
|
||||||
return CMD_WARNING; \
|
return CMD_WARNING; \
|
||||||
} \
|
} \
|
||||||
if (vrf->vrf_id == VRF_UNKNOWN) { \
|
if (vrf->vrf_id == VRF_UNKNOWN) { \
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "pim_rp.h"
|
#include "pim_rp.h"
|
||||||
#include "pim_nht.h"
|
#include "pim_nht.h"
|
||||||
#include "pim_jp_agg.h"
|
#include "pim_jp_agg.h"
|
||||||
|
#include "pim_igmp_join.h"
|
||||||
|
|
||||||
static void pim_if_igmp_join_del_all(struct interface *ifp);
|
static void pim_if_igmp_join_del_all(struct interface *ifp);
|
||||||
static int igmp_join_sock(const char *ifname, ifindex_t ifindex,
|
static int igmp_join_sock(const char *ifname, ifindex_t ifindex,
|
||||||
@ -1194,8 +1195,18 @@ static int igmp_join_sock(const char *ifname, ifindex_t ifindex,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pim_socket_join_source(join_fd, ifindex, group_addr, source_addr,
|
if (pim_igmp_join_source(join_fd, ifindex, group_addr, source_addr)) {
|
||||||
ifname)) {
|
char group_str[INET_ADDRSTRLEN];
|
||||||
|
char source_str[INET_ADDRSTRLEN];
|
||||||
|
pim_inet4_dump("<grp?>", group_addr, group_str,
|
||||||
|
sizeof(group_str));
|
||||||
|
pim_inet4_dump("<src?>", source_addr, source_str,
|
||||||
|
sizeof(source_str));
|
||||||
|
zlog_warn(
|
||||||
|
"%s: setsockopt(fd=%d) failure for IGMP group %s source %s ifindex %d on interface %s: errno=%d: %s",
|
||||||
|
__PRETTY_FUNCTION__, join_fd, group_str, source_str,
|
||||||
|
ifindex, ifname, errno, safe_strerror(errno));
|
||||||
|
|
||||||
close(join_fd);
|
close(join_fd);
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
@ -1219,6 +1230,7 @@ static struct igmp_join *igmp_join_new(struct interface *ifp,
|
|||||||
if (join_fd < 0) {
|
if (join_fd < 0) {
|
||||||
char group_str[INET_ADDRSTRLEN];
|
char group_str[INET_ADDRSTRLEN];
|
||||||
char source_str[INET_ADDRSTRLEN];
|
char source_str[INET_ADDRSTRLEN];
|
||||||
|
|
||||||
pim_inet4_dump("<grp?>", group_addr, group_str,
|
pim_inet4_dump("<grp?>", group_addr, group_str,
|
||||||
sizeof(group_str));
|
sizeof(group_str));
|
||||||
pim_inet4_dump("<src?>", source_addr, source_str,
|
pim_inet4_dump("<src?>", source_addr, source_str,
|
||||||
|
@ -60,8 +60,6 @@ static int pim_igmp_join_source(int fd, ifindex_t ifindex,
|
|||||||
|
|
||||||
return setsockopt(fd, SOL_IP, MCAST_JOIN_SOURCE_GROUP, &req,
|
return setsockopt(fd, SOL_IP, MCAST_JOIN_SOURCE_GROUP, &req,
|
||||||
sizeof(req));
|
sizeof(req));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* PIM_IGMP_JOIN_H */
|
#endif /* PIM_IGMP_JOIN_H */
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
#include "pim_mroute.h"
|
#include "pim_mroute.h"
|
||||||
#include "pim_sock.h"
|
#include "pim_sock.h"
|
||||||
#include "pim_str.h"
|
#include "pim_str.h"
|
||||||
#include "pim_igmp_join.h"
|
|
||||||
|
|
||||||
/* GLOBAL VARS */
|
/* GLOBAL VARS */
|
||||||
|
|
||||||
@ -322,26 +321,6 @@ int pim_socket_join(int fd, struct in_addr group, struct in_addr ifaddr,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pim_socket_join_source(int fd, ifindex_t ifindex, struct in_addr group_addr,
|
|
||||||
struct in_addr source_addr, const char *ifname)
|
|
||||||
{
|
|
||||||
if (pim_igmp_join_source(fd, ifindex, group_addr, source_addr)) {
|
|
||||||
char group_str[INET_ADDRSTRLEN];
|
|
||||||
char source_str[INET_ADDRSTRLEN];
|
|
||||||
pim_inet4_dump("<grp?>", group_addr, group_str,
|
|
||||||
sizeof(group_str));
|
|
||||||
pim_inet4_dump("<src?>", source_addr, source_str,
|
|
||||||
sizeof(source_str));
|
|
||||||
zlog_warn(
|
|
||||||
"%s: setsockopt(fd=%d) failure for IGMP group %s source %s ifindex %d on interface %s: errno=%d: %s",
|
|
||||||
__PRETTY_FUNCTION__, fd, group_str, source_str, ifindex,
|
|
||||||
ifname, errno, safe_strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
|
int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
|
||||||
struct sockaddr_in *from, socklen_t *fromlen,
|
struct sockaddr_in *from, socklen_t *fromlen,
|
||||||
struct sockaddr_in *to, socklen_t *tolen,
|
struct sockaddr_in *to, socklen_t *tolen,
|
||||||
|
@ -42,8 +42,6 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, struct interface *ifp,
|
|||||||
uint8_t loop);
|
uint8_t loop);
|
||||||
int pim_socket_join(int fd, struct in_addr group, struct in_addr ifaddr,
|
int pim_socket_join(int fd, struct in_addr group, struct in_addr ifaddr,
|
||||||
ifindex_t ifindex);
|
ifindex_t ifindex);
|
||||||
int pim_socket_join_source(int fd, ifindex_t ifindex, struct in_addr group_addr,
|
|
||||||
struct in_addr source_addr, const char *ifname);
|
|
||||||
int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
|
int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
|
||||||
struct sockaddr_in *from, socklen_t *fromlen,
|
struct sockaddr_in *from, socklen_t *fromlen,
|
||||||
struct sockaddr_in *to, socklen_t *tolen,
|
struct sockaddr_in *to, socklen_t *tolen,
|
||||||
|
Loading…
Reference in New Issue
Block a user