Date: Thu, 24 Jan 2008 15:13:54 +0200 From: Stefan Lambrev <stefan.lambrev@moneybookers.com> To: Kris Kennaway <kris@FreeBSD.org> Cc: freebsd-hackers@freebsd.org, Ivan Voras <ivoras@freebsd.org> Subject: Re: gettimeofday() in hping Message-ID: <47988F12.2050303@moneybookers.com> In-Reply-To: <47986FDE.3030402@FreeBSD.org> References: <4795CC13.7080601@moneybookers.com> <4795FE54.9090606@moneybookers.com> <86lk6i0vzk.fsf@ds4.des.no> <479605E2.6070709@moneybookers.com> <fn5c7u$i7e$2@ger.gmane.org> <47964356.6030602@moneybookers.com> <479647FB.3070909@FreeBSD.org> <47970EE2.5000400@moneybookers.com> <fn7evj$smv$1@ger.gmane.org> <479754E6.1060101@moneybookers.com> <9bbcef730801230802n5c52832bk60c6afc47be578f4@mail.gmail.com> <479794DB.4020504@FreeBSD.org> <47985936.2030705@moneybookers.com> <47986FDE.3030402@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Greetings,
Kris Kennaway wrote:
> Stefan Lambrev wrote:
>
>>> It is the socket buffer that is filling up. Either the application
>>> is not increasing it to large enough size or the default maximum is
>>> too low (Linux may set a larger default). Try increasing
>>> kern.ipc.maxsockbuf and confirming with the source and/or ktrace
>>> that it is doing the right setsockopt() call.
>> Increasing kern.ipc.maxsockbuf doesn't help.
>>
>> Actually this is the code that failed and print this error:
>>
>> result = sendto(sockraw, packet, packetsize, 0,
>> (struct sockaddr*)&remote, sizeof(remote));
>>
>> if (result == -1 && errno != EINTR && !opt_rand_dest &&
>> !opt_rand_source) {
>> perror("[send_ip] sendto");
>>
>> Those are the only references for setsockopt when ktracing:
>> 3385 hping CALL __sysctl(0xbfbfe870,0x6,0,0xbfbfe888,0,0)
>> 3385 hping RET __sysctl 0
>> 3385 hping CALL __sysctl(0xbfbfe870,0x6,0x28305180,0xbfbfe888,0,0)
>> 3385 hping RET __sysctl 0
>> 3385 hping CALL socket(PF_INET,SOCK_DGRAM,IPPROTO_IP)
>> 3385 hping RET socket 3
>> 3385 hping CALL
>> setsockopt(0x3,SOL_SOCKET,SO_BROADCAST,0xbfbfe884,0x4)
>> 3385 hping RET setsockopt 0
>> 3385 hping CALL connect(0x3,0x8067da0,0x10)
>> 3385 hping RET connect 0
>> 3385 hping CALL getsockname(0x3,0xbfbfe874,0xbfbfe888)
>> 3385 hping RET getsockname 0
>> 3385 hping CALL close(0x3)
>> 3385 hping RET close 0
>> 3385 hping CALL socket(PF_INET,SOCK_RAW,IPPROTO_RAW)
>> 3385 hping RET socket 3
>> 3385 hping CALL
>> setsockopt(0x3,SOL_SOCKET,SO_BROADCAST,0xbfbfe914,0x4)
>> 3385 hping RET setsockopt 0
>> 3385 hping CALL setsockopt(0x3,0,0x2,0xbfbfe914,0x4)
>> 3385 hping RET setsockopt 0
>> 3385 hping CALL open(0xbfbfe8a4,O_RDWR,<unused>0)
>> 3385 hping NAMI "/dev/bpf0"
>> 3385 hping RET open -1 errno 16 Device busy
>> 3385 hping CALL open(0xbfbfe8a4,O_RDWR,<unused>0)
>> 3385 hping NAMI "/dev/bpf1"
>> 3385 hping RET open 4
>
> OK, try adding the setsockopt(...SO_SNDBUF...) call.
Will something like this do the trick?
void socket_sndbuf(int sd)
{
long int bufsize;
bufsize = 65536;
if (setsockopt(sd, SOL_SOCKET, SO_SNDBUF,
(char *)&bufsize, sizeof(int)) == -1)
{
printf("[socket_sndbuf] can't set SO_SNDBUF option\n");
}
}
I'm not a C developer so pardon me if I made something stupid :)
Also how can I make bufsize = default settings*2 for example?
I tried this code and here is what ktrace show now:
65372 hping3 CALL socket(PF_INET,SOCK_DGRAM,IPPROTO_IP)
65372 hping3 RET socket 3
65372 hping3 CALL setsockopt(0x3,SOL_SOCKET,SO_BROADCAST,0xbfbfe844,0x4)
65372 hping3 RET setsockopt 0
65372 hping3 CALL connect(0x3,0x8067e20,0x10)
65372 hping3 RET connect 0
65372 hping3 CALL getsockname(0x3,0xbfbfe834,0xbfbfe848)
65372 hping3 RET getsockname 0
65372 hping3 CALL close(0x3)
65372 hping3 RET close 0
65372 hping3 CALL socket(PF_INET,SOCK_RAW,IPPROTO_RAW)
65372 hping3 RET socket 3
65372 hping3 CALL setsockopt(0x3,SOL_SOCKET,SO_BROADCAST,0xbfbfe8d4,0x4)
65372 hping3 RET setsockopt 0
65372 hping3 CALL setsockopt(0x3,0,0x2,0xbfbfe8d4,0x4)
65372 hping3 RET setsockopt 0
65372 hping3 CALL setsockopt(0x3,SOL_SOCKET,SO_SNDBUF,0xbfbfe8d4,0x4)
65372 hping3 RET setsockopt 0
>
> Kris
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe@freebsd.org"
--
Best Wishes,
Stefan Lambrev
ICQ# 24134177
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47988F12.2050303>
