lib: simplify interface of setsockopt_multicast_ipv4().

* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all
  non-ancient OSes can use it anyway), and if_addr parameter (the address
  of the interface) is now gone. (setsockopt_ipv4_multicast_if):
  IP_MULTICAST_IF processing moved to this new function

* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,
  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),
  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,
  rip_interface_new): adapt to the new interface
diff --git a/lib/sockopt.h b/lib/sockopt.h
index cb05c6f..69309e0 100644
--- a/lib/sockopt.h
+++ b/lib/sockopt.h
@@ -82,13 +82,11 @@
   (((af) == AF_INET) : SOPT_SIZE_CMSG_IFINDEX_IPV4() \
                     ? SOPT_SIZE_CMSG_PKTINFO_IPV6())
 
-extern int setsockopt_multicast_ipv4(int sock, int optname, 
-			             struct in_addr if_addr
-					 /* required: interface to join on */,
+extern int setsockopt_ipv4_multicast_if(int sock,
+			             unsigned int ifindex);
+extern int setsockopt_ipv4_multicast(int sock, int optname,
                                      unsigned int mcast_addr,
-			             unsigned int ifindex
-					 /* optional: if non-zero, may be used
-					 	instead of if_addr */);
+			             unsigned int ifindex);
 extern int setsockopt_ipv4_tos(int sock, int tos);
 
 /* Ask for, and get, ifindex, by whatever method is supported. */