troglobit / pimd

PIM-SM/SSM multicast routing for UNIX and Linux
http://troglobit.com/projects/pimd/
BSD 3-Clause "New" or "Revised" License
194 stars 86 forks source link

PIMD getting interface list with wrong name! #116

Closed EasyNetDev closed 5 years ago

EasyNetDev commented 6 years ago

Hi,

I've tried to use PIM. On some routers is working without problems, but on 2 of my routers when I'm trying to start it is detecting some interface with wrong name. If I'm checking for those IPs are o those interfaces:

Routing entry for 10.31.0.132/30
  Known via "connected", distance 0, metric 0, best
  Last update 18:03:31 ago
  * directly connected, eth2.914

Buh-R1# show ip route 46.a.b.45
Routing entry for 46.a.b.44/30
  Known via "connected", distance 0, metric 0, best
  Last update 18:04:24 ago
  * directly connected, eth2.914

This is the strace:

strace pimd -f -c /etc/pimd.conf execve("/usr/sbin/pimd", ["pimd", "-f", "-c", "/etc/pimd.conf"], 0x7ffe1484ba38 /* 22 vars */) = 0 brk(NULL) = 0x562b0f50d000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=26211, ...}) = 0 mmap(NULL, 26211, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f24b024a000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\20\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1783832, ...}) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f24b0248000 mmap(NULL, 3889792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f24afc77000 mprotect(0x7f24afe24000, 2093056, PROT_NONE) = 0 mmap(0x7f24b0023000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ac000) = 0x7f24b0023000 mmap(0x7f24b0029000, 14976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f24b0029000 close(3) = 0 arch_prctl(ARCH_SET_FS, 0x7f24b0249540) = 0 mprotect(0x7f24b0023000, 16384, PROT_READ) = 0 mprotect(0x562b0f15d000, 4096, PROT_READ) = 0 mprotect(0x7f24b0251000, 4096, PROT_READ) = 0 munmap(0x7f24b024a000, 26211) = 0 geteuid() = 0 mkdir("/var/run/pimd", 0755) = -1 EEXIST (File exists) brk(NULL) = 0x562b0f50d000 brk(0x562b0f52e000) = 0x562b0f52e000 open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=2221, ...}) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=2221, ...}) = 0 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 2221 lseek(3, -1406, SEEK_CUR) = 815 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 1406 close(3) = 0 getpid() = 586 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0 sendto(3, "<29>Feb 26 12:33:23 pimd[586]: p"..., 62, MSG_NOSIGNAL, NULL, 0) = 62 open("/etc/hostid", O_RDONLY) = -1 ENOENT (No such file or directory) uname({sysname="Linux", nodename="Buh-R1", ...}) = 0 stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0 read(4, "multi on\n", 4096) = 9 read(4, "", 4096) = 0 close(4) = 0 open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=70, ...}) = 0 read(4, "search abtelecom.ro\nnameserver 8"..., 4096) = 70 read(4, "", 4096) = 0 close(4) = 0 socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4 connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(4) = 0 socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4 connect(4, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(4) = 0 open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=513, ...}) = 0 read(4, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 513 read(4, "", 4096) = 0 close(4) = 0 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=26211, ...}) = 0 mmap(NULL, 26211, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f24b024a000 close(4) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 4 read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P#\0\0\0\0\0\0"..., 832) = 832 fstat(4, {st_mode=S_IFREG|0644, st_size=47592, ...}) = 0 mmap(NULL, 2168632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f24afa65000 mprotect(0x7f24afa70000, 2093056, PROT_NONE) = 0 mmap(0x7f24afc6f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xa000) = 0x7f24afc6f000 mmap(0x7f24afc71000, 22328, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f24afc71000 close(4) = 0 mprotect(0x7f24afc6f000, 4096, PROT_READ) = 0 munmap(0x7f24b024a000, 26211) = 0 open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0 read(4, "127.0.0.1\tlocalhost\n5.154.185.1\t"..., 4096) = 208 read(4, "", 4096) = 0 close(4) = 0 openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 4 read(4, "\17\232\337\5", 4) = 4 close(4) = 0 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f24b0227000 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f24b0206000 socket(AF_INET, SOCK_RAW, IPPROTO_IGMP) = 4 setsockopt(4, SOL_IP, IP_HDRINCL, [1], 4) = 0 setsockopt(4, SOL_SOCKET, SO_SNDBUF, [262144], 4) = 0 setsockopt(4, SOL_SOCKET, SO_RCVBUF, [262144], 4) = 0 setsockopt(4, SOL_IP, IP_MULTICAST_LOOP, "\0", 1) = 0 socket(AF_INET, SOCK_RAW, IPPROTO_PIM) = 5 setsockopt(5, SOL_IP, IP_HDRINCL, [1], 4) = 0 setsockopt(5, SOL_SOCKET, SO_SNDBUF, [262144], 4) = 0 setsockopt(5, SOL_SOCKET, SO_RCVBUF, [262144], 4) = 0 setsockopt(5, SOL_IP, IP_MULTICAST_LOOP, "\0", 1) = 0 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f24b01e5000 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f24b01c4000 socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE) = 6 bind(6, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0 getsockname(6, {sa_family=AF_NETLINK, nl_pid=586, nl_groups=00000000}, [12]) = 0 ioctl(4, SIOCGIFCONF, {ifc_len=64 * sizeof(struct ifreq) => 48 * sizeof(struct ifreq), ifc_buf=[{ifr_name="lo", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("127.0.0.1")}}, {ifr_name="lo0", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("5.154.185.0")}}, {ifr_name="lo1", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("5.154.185.1")}}, {ifr_name="lo3", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.0.1")}}, {ifr_name="eth2.810", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.30.0.49")}}, {ifr_name="eth2.900", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.0.105")}}, {ifr_name="eth3.900", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.0.101")}}, {ifr_name="eth2.910", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.1.105")}}, {ifr_name="eth3.910", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.1.101")}}, {ifr_name="eth3.930", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.191.0.110")}}, {ifr_name="eth3.933", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.0.65")}}, {ifr_name="eth2.913", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.190.1.118")}}, {ifr_name="eth0.431", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("89.a.b.94")}}, {ifr_name="eth0.432", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("172.16.0.138")}}, {ifr_name="eth1.643", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("176.a.b.242")}}, {ifr_name="eth1.645", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("176.a.b.250")}}, {ifr_name="tun0", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.191.0.101")}}, {ifr_name="tun1", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.250.10.1")}}, {ifr_name="tun4", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.31.0.141")}}, {ifr_name="tun5", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.250.10.9")}}, {ifr_name="tun6", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.250.10.29")}}, {ifr_name="tun10", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.0.101")}}, {ifr_name="tun11", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.1.101")}}, {ifr_name="tun13", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.1.109")}}, {ifr_name="eth2.64", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.31.0.1")}}, {ifr_name="DT1-new", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.31.0.133")}}, {ifr_name="dt1", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("46.a.b.45")}}, {ifr_name="pppoes0", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.245.244.1")}}, {ifr_name="pppoes1", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.245.244.1")}}, {ifr_name="pppoes9", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.245.244.1")}}, {ifr_name="pppoes11", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.245.244.1")}}, {ifr_name="pppoes12", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.245.244.1")}}, ...]}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="lo", ifr_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="lo0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="lo1", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="lo3", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth2.810", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth2.810", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth2.810", ifr_mtu=9000}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth2.810", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth2.900", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth2.900", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth2.900", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth2.900", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth3.900", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth3.900", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth3.900", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth3.900", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth2.910", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth2.910", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth2.910", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth2.910", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth3.910", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth3.910", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth3.910", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth3.910", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth3.930", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth3.930", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth3.930", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth3.930", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth3.933", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth3.933", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth3.933", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth3.933", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth2.913", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth2.913", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth2.913", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth2.913", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0.431", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth0.431", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth0.431", ifr_mtu=9000}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth0.431", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0.432", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth0.432", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth0.432", ifr_mtu=9000}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth0.432", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth1.643", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth1.643", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth1.643", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth1.643", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth1.645", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth1.645", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth1.645", ifr_mtu=1500}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth1.645", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun0", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="tun0", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="tun0", ifr_mtu=1480}) = 0 ioctl(4, SIOCGIFDSTADDR, {ifr_name="tun0", ifr_dstaddr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.191.0.101")}}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="tun0", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun1", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun4", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun5", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun6", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun10", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP}) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun11", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="tun11", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="tun11", ifr_mtu=1480}) = 0 ioctl(4, SIOCGIFDSTADDR, {ifr_name="tun11", ifr_dstaddr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.1.101")}}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="tun11", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="tun13", ifr_flags=IFF_UP|IFF_POINTOPOINT|IFF_RUNNING|IFF_NOARP|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="tun13", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="tun13", ifr_mtu=1472}) = 0 ioctl(4, SIOCGIFDSTADDR, {ifr_name="tun13", ifr_dstaddr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("10.193.1.109")}}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="tun13", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth2.64", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ioctl(4, SIOCGIFNETMASK, {ifr_name="eth2.64", ifr_netmask={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("255.255.255.252")}}) = 0 ioctl(4, SIOCGIFMTU, {ifr_name="eth2.64", ifr_mtu=9000}) = 0 ioctl(4, SIOCGIFINDEX, {ifr_name="eth2.64", }) = 0 ioctl(4, SIOCGIFFLAGS, {ifr_name="DT1-new"}) = -1 ENODEV (No such device) stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2221, ...}) = 0 fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 4), ...}) = 0 write(2, "pimd: 12:33:23.265 Failed readin"..., 85pimd: 12:33:23.265 Failed reading interface flags for phyint DT1-new: No such device ) = 85 getpid() = 586 sendto(3, "<27>Feb 26 12:33:23 pimd[586]: F"..., 96, MSG_NOSIGNAL, NULL, 0) = 96 exit_group(-1) = ? +++ exited with 255 +++

troglobit commented 6 years ago

Hi, instead of just dumping the strace log, could you please tell us a bit more about your case to help our understanding of the problem you are reporting:

  1. What version of pimd are you running?
  2. How many interfaces do you have?
  3. How are the interfaces named?
  4. How does your pimd.conf file look like?
  5. What does your command line arguments look like?
EasyNetDev commented 6 years ago

Hi, Thanks for reply. Here are the details:

  1. pimd version 2.3.2
  2. R1 74 interfaces, R2 62 R1 interfaces: lo,eth5,pppoes20,eth0,eth1,eth2,eth3,eth4,vpn,lo0,lo1,lo2,lo3,eth2.810,eth2.812,eth2.900,eth3.900,eth2.910,eth3.910,eth2.930,eth3.930,eth3.933,eth2.913,eth0.431,eth0.432,eth1.643,eth1.645,eth1.651,eth1.653,tunl0,tun0,pppoes3,tun1,pppoes4,tun4,gre0,pppoes18,gretap0,erspan0,tun5,tun6,tun10,tun11,tun13,sit0,sit1,eth2.64,eth2.914,eth2.4,eth2.9,eth2.10,eth2.11,eth2.20,eth2.200,eth2.201,eth2.202,eth2.203,eth2.204,eth2.540,pppoes15,pppoes5,pppoes6,pppoes10,pppoes13,pppoes16,pppoes0,pppoes1,pppoes9,pppoes11,pppoes12,pppoes14,pppoes7,pppoes8,pppoes17

R2 interfaces: lo,gi0-0,gi0-1,gi0-2,gi0-3,gi2-0,gi8-0,vpn,lo0,lo1,lo2,lo3,gi0-3.830,gi0-3.831,gi0-2.811,gi0-2.900,gi0-3.900,gi0-2.910,gi0-3.910,gi0-2.930,gi0-3.930,gi0-3.933,gi0-2.911,gi0-1.644,gi0-1.646,gi0-1.652,gi0-1.654,tunl0,tun0,tun1,tun6,gre0,gretap0,erspan0,tun7,tun10,tun11,sit0,sit1,gi0-2.63,gi0-2.64,gi0-2.914,gi0-2.3,gi0-2.4,gi0-2.5,gi0-2.6,gi0-2.7,gi0-2.9,gi0-2.10,gi0-2.17,gi0-2.15,gi0-2.20,gi0-2.200,gi0-2.201,gi0-2.202,gi0-2.203,gi0-2.204,gi0-2.205,gi0-2.540,ovpn-tcp22,ovpn-tcp443,ovpn-udp443

# cat /etc/pimd.conf
# Exmaple configuration file for pimd, the original PIM-SM router
#
# See the pimd(8) man page for details on all the settings.  This file
# only gives very brief examples and is intended as a quick start.
#
# NOTE: The order of the settings matter!
#
##
# default-route-distance <1-255>
# default-route-metric   <1-1024>
# hello-interval         <30-18724>
#
# igmp-query-interval  <SEC>
# igmp-querier-timeout <SEC>
#
# phyint <local-addr | ifname>
#        [disable | enable] [igmpv2 | igmpv3]
#        [dr-priority <1-4294967294>]
#        [ttl-threshold <1-255>] [distance <1-255>] [metric <1-1024>]
#        [altnet <network> [/<masklen> | masklen <masklen>]]
#        [scoped <network> [/<masklen> | masklen <masklen>]]
#
# bsr-candidate [local-addr | ifname] [priority <0-255>]
# rp-candidate  [local-addr | ifname] [priority <0-255> ] [time <10-16383>]
#                group-prefix <group-addr>[/<masklen> | masklen <masklen>]
#                group-prefix <group-addr>[/<masklen> | masklen <masklen>]
#                   .
#                   .
#                group-prefix <group-addr>[/<masklen> | masklen <masklen>]
# rp-address    <local-addr> [<group-addr>[/<masklen> | masklen <masklen>]
#
# spt-threshold [rate <KBPS> | packets <NUM> | infinity] [interval <SEC>]
##
#
# By default PIM is activated on all interfaces.  Use `phyint disable`
# on interfaces where PIM should not run.  You can also use the `-N,
# --disable-vifs` command line option along with `enable` to get the
# inverse behavior.
#
# The routing protocol admin distance (or metric preference per the RFC)
# is used in PIM Assert elections to elect the forwarder of multicast.
# Currently pimd cannot obtain distance and metric from the underlying
# routing protocols, so a default distance may need to be configured per
# interface.  If left out, the default-route-distance is used for the
# phyint.  In PIM assert elections the router advertising the lowest
# preference (distance) will be selected as forwarder (upstream router)
# for that LAN.  An admin distance of 101 should be sufficiently high so
# that asserts from Cisco or GateD routers are prefered over poor-little
# pimd.
#
# It is reccommended that preferences (admin distance) be set such that
# metrics are never consulted.  However, default metrics may also be set
# and default to 1024.
#
# A phyint directive can use either the interface name, ifname, or the
# IP address.  The distance and metric settings define administrative
# distance and metric, respectively, for PIM Assert messages sent on
# that interface.  Usually you do not need this, but if you do, think of
# them like distance and metric defined on an inbound interface (iif),
# but used by PIM Asserts on the outbound interfaces (oifs).
#
# If you want to add "alternative (sub)net" to a physical interface,
# e.g., if you want to make incoming traffic with a non-local source address
# to appear as it is coming from a local subnet, then use the command:
#
#   phyint <local-addr | ifname> altnet <net-addr> masklen <len>
#
# NOTE: if you use this command, make sure you know what you are doing!
#
# If you want administratively scoped multicast filtering, use the
# following command:
#
#   phyint <local-addr | ifname> scoped <net-addr> masklen <masklen>
#
# This allows interfaces to be configured as an administrative boundary
# for the specified scoped address, or address range.  Packets belonging
# to the scoped range will not be forwarded.  Use `--enable-scoped-acls`
# flag to the configure script to activate this at build time.
#
# Both rp-candidate and bsr-candidate are enabled in the default config,
# below.  Disabling them for all PIM capable routers is a bad idea. At
# least one PIM router in the backbone must act as a bootstrap router.
# The optional local-addr or ifname arguments after the rp-candidate and
# bsr-candidate settings specify the local address to be used in the
# Cand-RP and Cand-BSR messages.  In case ifname is given as argument,
# the first IPv4 address of that interface is used.  If either is
# unspecified, the largest local IP address will be used, excluding
# phyint interfaces where PIM has been disabled.
#
# The time argument to rp-candidate specifies how often to send Cand-RP
# messages.  The default value is 30 seconds.  Use smaller values for
# faster convergence.
#
# The group-prefix setting is the prefix(es) advertised if rp-candidate.
# It is possible to set up to 255 group-prefix records.
#
# Using the rp-address setting it is possible to set a static rendezvous
# point.  The argument can be either a unicast or a multicast address
# followed by an optional group address and optional masklen to that.
#
# The spt-threshold specifies the minimum rate in kbps before the last
# hop router initiates a switch to the shortest path.  The `packets`
# argument is an alternative notation, `infinity` means to never switch,
# and `interval` specifies the interval for periodical testing of the
# threshold.  Currently, `interval` must be at least 5 (seconds)
#
# Interface defaults, like default-route-distance and -metric must be
# set before the phyint section -- the .conf parser is not clever.
#default-route-distance   101      # smaller is better
#default-route-metric     1024     # smaller is better
#hello-interval           30       # Don't set lower than 30

# The phyint settings currently *MUST BE* ordered after the default
# source preference and metric settings, but before everything else.

# By default, all non-loopback multicast capable interfaces are enabled.
# If you want to use loopback, set the interface multicast flag on it.
#phyint eth0 disable
#phyint tun0 enable
#phyint tun11 enable
#phyint gi0-2.911
#phyint gi0-2.900
#phyint gi0-3.900

# IGMP default query interval and querier timeout.  The latter should
# per RFC always be (robustness * interval) + (query-response / 2), for
# pimd this means: (3 * 12) + (10 / 2) = 41, we've rounded it up to
# honor the late Douglas Adams.  You can set it to a higher value, but
# it is not recommended to set it lower.
#igmp-query-interval  12
#igmp-querier-timeout 42

# Bigger value means  "higher" priority
bsr-candidate priority 5

# Smaller value means "higher" priority
rp-candidate time 30 priority 20

# Candidate for being RP of complete IPv4 multicast range
#group-prefix 224.0.0.0 masklen 4
group-prefix 232.0.0.0 masklen 8

# Static rendez-vous point
#rp-address 192.168.10.1 224.0.0.0/4
rp-address 10.190.0.8 232.0.0.0/8

# Switch to shortest-path tree after first packet, but only after 100 sec.
spt-threshold packets 0 interval 100
  1. R1# pimd -f -c /etc/pimd.conf pimd: 23:21:05.103 Failed reading interface flags for phyint DT1-new: No such device R2# pimd -f -c /etc/pimd.conf pimd: 21:19:26.898 Failed reading interface flags for phyint NewIP: No such device Both configurations are almost the same. What I've notice is that if I'm recreating the IOCTL call in a C file, compile and run it on those 2 routers I've got the same behavior.
troglobit commented 6 years ago

Aha, now I understand. Thank you for taking the time to answer in such detail! :smiley:

The latest pimd sources, on the master branch, has commit dacf8b2 which converts pimd from using SIOCGIFCONF to getifaddrs(). I believe this should fix your problem.

There is currently only one remaining issue before the release of pimd v3.0. I you like, you can help by testing it out.

troglobit commented 5 years ago

No response in this thread, closing as fixed in dacf8b2 for v3.0.