From owner-freebsd-questions Thu Feb 5 00:05:54 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id AAA08288 for questions-outgoing; Thu, 5 Feb 1998 00:05:54 -0800 (PST) (envelope-from owner-freebsd-questions@FreeBSD.ORG) Received: from klokan.sh.cvut.cz (root@klokan.sh.cvut.cz [193.84.105.141]) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id AAA08274 for ; Thu, 5 Feb 1998 00:05:38 -0800 (PST) (envelope-from J.Klaus@sh.cvut.cz) Received: from skunk.sh.cvut.cz (skunk.sh.cvut.cz [194.108.141.194]) by klokan.sh.cvut.cz (8.6.12/8.6.9) with ESMTP id JAA00131 for ; Thu, 5 Feb 1998 09:05:00 +0100 Received: from SKUNK/SpoolDir by skunk.sh.cvut.cz (Mercury 1.31); 5 Feb 98 09:05:05 +0100 Received: from SpoolDir by SKUNK (Mercury 1.31); 5 Feb 98 00:22:54 +0100 Received: from hell.sh.cvut.cz by skunk.sh.cvut.cz (Mercury 1.31) with ESMTP; 5 Feb 98 00:22:50 +0100 Message-ID: X-Mailer: XFMail 1.2 [p0] on FreeBSD X-Priority: 3 (Normal) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=XFMail.1.2.p0.FreeBSD:980205002316:9663=_" Date: Thu, 05 Feb 1998 00:23:20 +0100 (CET) Organization: CTU Prague From: Jaroslav Klaus To: freebsd-questions@FreeBSD.ORG Subject: IPX RAW socket Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG X-To-Unsubscribe: mail to majordomo@FreeBSD.org "unsubscribe questions" This message is in MIME format --_=XFMail.1.2.p0.FreeBSD:980205002316:9663=_ Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: quoted-printable Hello, I'd like to send IPX type20 packet. I've writen a small prg but sendto returns errno=3D56. Is IPX RAW socket implemented in FBSD2.2? Can anybody h= elp me with it? I attached my program in this mail. I started it by this way: %./ipx 0x337130.0x00:00:b4:72:aa:83.0x5500 0.0:00:12:34:56:78.0x5520 couldn't send packet 0.12345678H.5520H : 337130H.b472aa83.5500H -> 0.12345678H.5520H 56: unknown error And another Q. In ports is there any tool for sending data to network iface= ? I need resend some ethernet packet captured by 'tcpdump -w '. Thank you, -- Jarda --_=XFMail.1.2.p0.FreeBSD:980205002316:9663=_ Content-Disposition: attachment; filename="ipx.c" Content-Transfer-Encoding: 7bit Content-Description: ipx.c Content-Type: text/plain; charset=us-ascii; name=ipx.c; SizeOnDisk=3841 #include #include #include #include #include #include #include #include #include #include #define IPX_DATA_LEN 20 #define IPXPROTO_NETBIOS 20 u_short checksum(u_short * data,u_short length) { register long value; u_short i; for(i=0;i<(length>>1);i++) value+=data[i]; if((length&1)==1) value+=(data[i]<<8); value=(value&65535)+(value>>16); return(~value); } int main(int argc, char ** argv) { struct sockaddr_ipx sipx; int sock,err; char buffer[sizeof(struct ipx)+IPX_DATA_LEN]; struct ipx * ipxheader=(struct ipx *)buffer; struct ipx_addr addr; char src_addr[30]; char dst_addr[30]; char sck_addr[30]; if (argc<3) { fprintf(stderr,"usage: %s src_ipx_addr dst_ipx_addr\n",argv[0]); return (-1); } bzero(&sipx,sizeof(struct sockaddr_ipx)); sipx.sipx_family=AF_IPX; bzero(&buffer, sizeof(struct ipx)+IPX_DATA_LEN); ipxheader->ipx_len=sizeof(struct ipx)+IPX_DATA_LEN; ipxheader->ipx_tc =0; ipxheader->ipx_pt =IPXPROTO_NETBIOS; addr=ipx_addr(argv[2]); bcopy(&addr, &sipx.sipx_addr, sizeof(struct ipx_addr)); bcopy(&addr,&ipxheader->ipx_dna, sizeof(struct ipx_addr)); addr=ipx_addr(argv[1]); bcopy(&addr,&ipxheader->ipx_sna, sizeof(struct ipx_addr)); ipxheader->ipx_sum=0;//checksum((u_short *)ipxheader, sizeof(struct ipx) ); if ((sock=socket(PF_IPX,SOCK_RAW,IPXPROTO_RAW))==-1) { fprintf(stderr,"couldn't allocate raw socket\n"); return (-1); } sprintf(sck_addr,"%s",ipx_ntoa(sipx.sipx_addr)); sprintf(src_addr,"%s",ipx_ntoa(ipxheader->ipx_sna)); sprintf(dst_addr,"%s",ipx_ntoa(ipxheader->ipx_dna)); if((err=sendto(sock, buffer, sizeof(struct ipx)+IPX_DATA_LEN, 0, (struct sockad dr *) &sipx, sizeof(struct sockaddr_ipx)))==-1) { fprintf(stderr,"couldn't send packet\n"); fprintf(stderr,"%s : %s -> %s\n",sck_addr,src_addr,dst_addr); switch(errno) { case EBADF: { fprintf(stderr,"EBADF\n"); break; } case EACCES: { fprintf(stderr,"EACCES\n"); break;} case ENOTSOCK: { fprintf(stderr,"ENOTSOCK\n");break;} case EFAULT: { fprintf(stderr,"EFAULT\n"); break;} case EMSGSIZE: { fprintf(stderr,"EMSGSIZE\n"); break;} case EAGAIN: { fprintf(stderr,"EAGAIN\n"); break;} case ENOBUFS: { fprintf(stderr,"ENOBUFS\n"); break;} case EHOSTUNREACH: { fprintf(stderr,"EHOSTUNREACH\n"); break;} default: { fprintf(stderr,"%d: unknown error\n",errno); break;} } return (-1); } fprintf(stderr,"IPX packet was sent:\n%s : %s -> %s\n",sck_addr,src_addr,dst_ad dr); return (0); } --_=XFMail.1.2.p0.FreeBSD:980205002316:9663=_-- End of MIME message