static int mroute_list(int argc, char **argv)
{
char *id = NULL;
- int family;
+ int family = preferred_family;
ipmroute_reset_filter(0);
- if (preferred_family == AF_UNSPEC)
- family = AF_INET;
- else
- family = AF_INET6;
- if (family == AF_INET) {
+ if (family == AF_INET || family == AF_UNSPEC) {
+ family = RTNL_FAMILY_IPMR;
filter.af = RTNL_FAMILY_IPMR;
filter.tb = RT_TABLE_DEFAULT; /* for backward compatibility */
- } else
+ } else if (family == AF_INET6) {
+ family = RTNL_FAMILY_IP6MR;
filter.af = RTNL_FAMILY_IP6MR;
+ } else {
+ /* family does not have multicast routing */
+ return 0;
+ }
filter.msrc.family = filter.mdst.family = family;