[syslog-ng]localport binding...

Balazs Scheidler bazsi@balabit.hu
Mon, 16 Sep 2002 10:27:28 +0200


On Sun, Sep 15, 2002 at 06:33:51PM -0700, Nate Campi wrote:
> On Sun, Sep 15, 2002 at 08:16:13PM -0400, Robert D. Beal wrote:
> > I'm trying to get syslog-ng (1.5.20) to use 514 as its source port when 
> > using the udp destination driver as follows:
> > 
> >     destination d_syslog { udp("192.168.0.2" destport(514) localport(514)); 
> >     };
> 
> I had no idea you could set the local port, I just checked the source of
> 1.5.20 and found this example:
> 
>  doc/sgml/syslog-ng.sgml:            
>   destination d_tcp { tcp("10.1.2.3" port(1999); localport(999)); };
> 
> Looks like you need this:
> 
>  destination d_syslog { udp("192.168.0.2" port(514); localport(514));  };

As it seems the docs is buggy, Robert is  right. The bug lies in libol, it
only binds the local socket if the local address is defined. So there are
two solutions:

* supply localip as well as localport
* apply this patch to libol, and recompile


diff -u -r1.26 -r1.28
--- io.c	11 Oct 2001 18:25:14 -0000	1.26
+++ io.c	16 Sep 2002 08:23:22 -0000	1.28
@@ -829,9 +834,9 @@
 		memcpy(sa, &a->sa, sizeof(a->sa));
 		return 1;
 	}
-	if (a->ip && !tcp_addr(in,
-				a->ip->length, a->ip->data,
-				a->port))
+	if (tcp_addr(in,
+		     a ? a->ip->length : 7, a ? a->ip->data : "0.0.0.0",
+		     a->port))
 		return 0;
 	else
 		if (!a->ip && !tcp_addr(in, 0, NULL, a->port))


-- 
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1