andy@lasspvax.UUCP (Andy Pfiffer) (08/06/85)
I'm trying to get a public domain pinger (from Mike Muus, Army Ballistic
Research Lab.) to run. Simply, why does:
.
.
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0) {
perror("ping: socket");
exit(5);
}
.
.
generate:
ping: socket: Protocol wrong type for socket
?? Can't I create a socket like this? It runs setuid root...
Frustrated. Help...
--
=========================================================
USENET: {decvax,ihnp4,cmcl2,vax135}!cornell!devvax!andy
ARPA: andy%devvax@Cornell.arpa
MAIL: Theory Center/265 Olin Hall "What do you mean
Cornell University I watch too much
Ithaca, NY 14853 TV?"
PHONE: (607) 256-8686
=========================================================mike@BRL.ARPA (Mike Muuss) (08/12/85)
As the comment on the front of PING.C says, it depends on
your having installed various fixes to your kernel.
Most importantly, you have to change /sys/netinet/in_proto.c:
Remove:
< { 0, PF_INET, IPPROTO_ICMP, 0,
< icmp_input, 0, 0, 0,
< 0,
< 0, 0, 0, 0,
< },
At the end of the protosw table, add:
> { SOCK_RAW, PF_INET, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR,
> icmp_input, rip_output, 0, 0,
> raw_usrreq,
> 0, 0, 0, 0,
> },
This will be enough to get you started. There are bugs in
ip_input.c as well; contact me by electronic mail if you
need these changes too; they are too numerous to post here.
Best,
-Mike Muuss
(301)-278-6678
AV 283-6678
FTS 939-6678
ArpaNet: Mike @ BRL
UUCP: ...!{decvax,cbosgd}!brl-bmd!mike
Postal:
Mike Muuss
Leader, Advanced Computer Systems Team
Computer Science and Mathematics Branch
Systems Engineering and Concepts Analysis Division
U.S. Army Ballistic Research Laboratory
Attn: AMXBR-SECAD (Muuss)
APG, MD 21005