Date: Mon, 14 Aug 2000 15:01:06 +1200 From: "MATTHEW JOHN,LUCKIE" <mjl12@waikato.ac.nz> To: freebsd-net@freebsd.org Subject: determing ip->ip_src Message-ID: <45E87454FFC2D211AD9800508B65009420F8E8@stu-ex1.waikato.ac.nz>
next in thread | raw e-mail | index | archive | help
Hi there
I am writing some code that records the source address of the packet in the
data segment of the ip packet.
This code is part of a kernel module loaded via syscall
How do i deduce what source address to record in the data area of the packet
as i want to before it is sent to ip_output?
I realise that ip_output will sort ip_src out for me, but i want to know
this value ahead of calling ip_output()
I have tried the following code, based on what happens in ip_output when a
packet with no source address is passed to it and the destination address is
not a multicast address, but it does not get me any further as the second
test for ro.ro_rt fails. Even if it didnt fail, i dont think the following
fragment would be any good, given that i do not take any account of the
destination address.
What should I be doing?
Is there a higher level function available for me to all that will return
the value?
Thanks
Matthew
-------------
u_int32_t getoutif()
{
struct in_addr in_addr;
struct in_ifaddr *ia;
struct route ro;
bzero(&ro, sizeof ro);
if(ro.ro_rt == 0)
{
rtalloc_ign(&ro, RTF_PRCLONING);
}
if(ro.ro_rt == 0)
{
printf("INADDR_ANY");
return INADDR_ANY;
}
ia = ifatoia(ro.ro_rt->rt_ifa);
ro.ro_rt->rt_use++;
in_addr = IA_SIN(ia)->sin_addr;
RTFREE(ro.ro_rt);
print_ip(in_addr);
return in_addr.s_addr;
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45E87454FFC2D211AD9800508B65009420F8E8>
