Date: Sun, 5 Jan 2003 05:31:35 -0600 (CST) From: Abdul Basit <basit@basit.cc> To: net@freebsd.org Subject: raw socket/icmp-echo Message-ID: <20030105052449.K49935-100000@wireless.cs.twsu.edu>
next in thread | raw e-mail | index | archive | help
Hello, I was trying to learn raw sockets, I wrote a simple program to get all icmp packets and display .. -- program int main(void) { int sockfd; int ip_len; char *buf; int n; struct icmp *icmp; struct ip *ip; buf = (char*) malloc(sizeof(struct ip)+sizeof(struct icmp)); sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); for (;;) { n = recv(sockfd, buf, sizeof(buf),0); ip = (struct ip *) buf; ip_len = ip->ip_hl << 2; // ip header length icmp = (struct icmp *) (buf + ip_len); if (icmp->icmp_type == ICMP_ECHO) { printf("ping request arrived\n"); } } } -- end The program compiles fine, but it can't recieve echo request , seems like the BSD kernel is not passing icmp echo type requests to raw socket? I beleive this is NOT the case in Linux, why this behaviour exists in BSD? is there any way to circumvent this ? Also, if anyone know any good tutorial on bpf , let me know the url (some simple example for capturing will be good .. i read bpf manpage, it seems little obscure to me). -- basit Graduate Stdudent Dept. Of Computer science. Wichita state university 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?20030105052449.K49935-100000>