-1
lenが20から2バイト減少するため、sendto()は "無効な引数"を返します。 なぜrecvfrom()を呼び出すとlenが変更されるのですか?recvfrom()はlenを変更しますか?
s=socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
struct sockaddr_ll sll;
len=sizeof(sll);
bzero((char *)&sll, sizeof(sll));
sll.sll_ifindex=3;
rf=recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *) &sll, &len);
st=sendto(s, buf, 6+6+2+20+8+8, 0, (struct sockaddr *) &sll, len);
考えてみてください。なぜ実際の 'len'へのポインタを呼び出しに渡すのですか? –