Greetings,
Stefan Lambrev wrote:
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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to
"[EMAIL PROTECTED]"
I finally managed to get ktrace of falling hping
2250 hping3 RET sendto 40/0x28
2250 hping3 CALL sigaction(SIGALRM,0x7fffffffe7b0,0x7fffffffe790)
2250 hping3 RET sigaction 0
2250 hping3 CALL setitimer(0,0x7fffffffe7c0,0x7fffffffe7a0)
2250 hping3 RET setitimer 0
2250 hping3 CALL gettimeofday(0x7fffffffe780,0)
2250 hping3 RET gettimeofday 0
2250 hping3 CALL gettimeofday(0x7fffffffe780,0)
2250 hping3 RET gettimeofday 0
2250 hping3 CALL sendto(0x3,0x800e1b050,0x28,0,0x522600,0x10)
2250 hping3 GIO fd 3 wrote 40 bytes
0x0000 4500 2800 c3f0 0000 4006 0000 0a03 0303 0a03 0301 9570
0050 6b32 4398 30f3 e723 5002 0200 3737 0000
|E.([EMAIL PROTECTED]|
2250 hping3 RET sendto 40/0x28
2250 hping3 CALL sigaction(SIGALRM,0x7fffffffe7b0,0x7fffffffe790)
2250 hping3 RET sigaction 0
2250 hping3 CALL setitimer(0,0x7fffffffe7c0,0x7fffffffe7a0)
2250 hping3 RET setitimer 0
2250 hping3 CALL gettimeofday(0x7fffffffe780,0)
2250 hping3 RET gettimeofday 0
2250 hping3 CALL gettimeofday(0x7fffffffe780,0)
2250 hping3 RET gettimeofday 0
2250 hping3 CALL sendto(0x3,0x800e1b050,0x28,0,0x522600,0x10)
2250 hping3 RET sendto -1 errno 55 No buffer space available
2250 hping3 CALL writev(0x2,0x7fffffffe6a0,0x4)
2250 hping3 GIO fd 2 wrote 44 bytes
"[send_ip] sendto: No buffer space available
"
2250 hping3 RET writev 44/0x2c
2250 hping3 CALL close(0x3)
2250 hping3 RET close 0
2250 hping3 CALL close(0x4)
2250 hping3 RET close 0
2250 hping3 CALL exit(0x1)
and it only confirms that sendto failed.
BTW this is with patched source after calling setsockopt(..SO_SNDBUF..)
where bufsize = 165536.
--
Best Wishes,
Stefan Lambrev
ICQ# 24134177
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"