Ok, here is a diff that works.

it cycles the source IP address from 32000-42000 (since we are just sending, and not creating a normal socket this should not matter)

it needs LIBS = /usr/lib/libnet.a in the Makefile in tools

to use it create a template that puts the hostname-ip ahead of what you want to send, similar to

$template TraditionalFwdFormat,"%fromhost-ip% <%pri%>%timegenerated% %HOSTNAME% 
%syslogtag%%msg%\n"

*.*     @10.0.0.100;TraditionalFwdFormat

the one problem right now is that any logs sent from the local box will go out with a source IP of 127.0.0.1

I wasted a bit of time trying to setup filters to use a different template if $myhostname == $fromhost, but apparently the filtering doesn't allow comparing two properties, and then I realized that you have a very high-performance name cache now, so you could easily replace my trivial inet_pton(AF_INET, source_text_ip, &(source_ip.sin_addr)); line with a call to the name lookup and then the %fromhost-ip% could be replaced by %fromhost% in the template and everything would work sanely (assuming forward and reverse name resolution are sane ;-)

I haven't tried to do IPv6 yet, I know that it requires more effort to set the IP layer options, but I don't know exactly what yet.

I wanted to float this first to see what you think before spending much more time on it.

David Lang
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com

Reply via email to