summaryrefslogtreecommitdiff
path: root/ripd/rip_interface.c
diff options
context:
space:
mode:
authorpaul <paul>2005-08-16 15:22:14 +0000
committerpaul <paul>2005-08-16 15:22:14 +0000
commit2c61ae37821f4ece2b2f22d716ac8a135808e70c (patch)
tree2ef1ae310612294f9a8ec16bb94d7858070c757b /ripd/rip_interface.c
parent60f0651c32e6ee35da5f2d227dc471427568ff45 (diff)
2005-08-16 Paul Jakma <paul.jakma@sun.com>
* ripd.c: (general) Fix previous commit, broke multicast bind and hence setting of source port, which broke communication with non-borken ripd. Fix removes more stuff from rip_interface.c than it adds to ripd.c ;) (rip_create_socket) the to argument really is a from argument, rename it. Set the source port to RIP port unconditionally, it's required. (rip_send_packet) Set from address correctly for multicast. (rip_output_process) trivial: num can be BSS specified, rather than in body. * rip_interface.c: (rip_interface_multicast_set) strip out redundant stuff related to bind, which rip_create_socket does. Just make it set the multicast socket option, as per the interface concerned, no more.
Diffstat (limited to 'ripd/rip_interface.c')
-rw-r--r--ripd/rip_interface.c40
1 files changed, 1 insertions, 39 deletions
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 4a6f78e2..5fa4b7d3 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -139,9 +139,6 @@ rip_interface_new ()
void
rip_interface_multicast_set (int sock, struct connected *connected)
{
- int ret;
- struct servent *sp;
- struct sockaddr_in from;
struct in_addr addr;
struct prefix_ipv4 *p;
@@ -161,43 +158,8 @@ rip_interface_multicast_set (int sock, struct connected *connected)
"source address %s for interface %s",
sock, inet_ntoa(addr),
connected->ifp->name);
- return;
- }
-
- /* Bind myself. */
- memset (&from, 0, sizeof (struct sockaddr_in));
-
- /* Set RIP port. */
- sp = getservbyname ("router", "udp");
- if (sp)
- from.sin_port = sp->s_port;
- else
- from.sin_port = htons (RIP_PORT_DEFAULT);
-
- /* Address should be any address. */
- from.sin_family = AF_INET;
- from.sin_addr = connected->address->u.prefix4;
-#ifdef HAVE_SIN_LEN
- from.sin_len = sizeof (struct sockaddr_in);
-#endif /* HAVE_SIN_LEN */
-
- if (ripd_privs.change (ZPRIVS_RAISE))
- zlog_err ("rip_interface_multicast_set: could not raise privs");
-
- ret = bind (sock, (struct sockaddr *) & from, sizeof (struct sockaddr_in));
- if (ret < 0)
- {
- zlog_warn ("Can't bind socket fd %d to %s port %d for "
- "interface %s: %s",
- sock,inet_ntoa(from.sin_addr),
- (int)ntohs(from.sin_port),
- connected->ifp->name,
- safe_strerror (errno));
}
-
- if (ripd_privs.change (ZPRIVS_LOWER))
- zlog_err ("rip_interface_multicast_set: could not lower privs");
-
+
return;
}