From owner-freebsd-net@FreeBSD.ORG Mon Apr 10 09:40:53 2006 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 032B116A401 for ; Mon, 10 Apr 2006 09:40:53 +0000 (UTC) (envelope-from stefan@sf-net.com) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.186]) by mx1.FreeBSD.org (Postfix) with ESMTP id 49F4E43D49 for ; Mon, 10 Apr 2006 09:40:51 +0000 (GMT) (envelope-from stefan@sf-net.com) Received: from [195.238.138.179] (helo=[192.168.130.99]) by mrelayeu.kundenserver.de (node=mrelayeu9) with ESMTP (Nemesis), id 0ML2xA-1FSst62Vkz-0005iC; Mon, 10 Apr 2006 11:40:49 +0200 Mime-Version: 1.0 (Apple Message framework v749.3) X-Gpgmail-State: !signed Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: Content-Transfer-Encoding: 7bit From: Stefan Date: Mon, 10 Apr 2006 11:40:46 +0200 To: freebsd-net@freebsd.org X-Mailer: Apple Mail (2.749.3) X-Provags-ID: kundenserver.de abuse@kundenserver.de login:0525cf9cbe16c6d3d153baa8ed291ac7 Subject: raw ip paket sendto error X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Apr 2006 09:40:53 -0000 Hi, I'm trying to port my little application to the FreeBSD-system and encountered some difficults I can't solve. The program is running fine on SunOS, OpenBSD, Mac OS X and Debian GNU/Linux so I thought it should run fine on FreeBSD too. Maybe I forget something and you can help me out? The first problem I had was at the function getaddrinfo. If I don't submit a hints struct I get an error like this: "servname not supported for ai_socktype" This is the source part where the error occured: if((getaddrinfoError = getaddrinfo(src_addr, src_port, NULL, &src_ai)) != 0) { fprintf(stderr, "Error getaddrinfo (src address): %s\n", gai_strerror(getaddrinfoError)); exit(EXIT_FAILURE); } When I changed it to use a hint like this: struct addrinfo hints; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_DGRAM; hints.ai_flags = 0; hints.ai_protocol = 0; hints.ai_addrlen = 0; hints.ai_canonname = NULL; hints.ai_addr = NULL; hints.ai_next = NULL; The function runs fine like I expected. Why does this happen on FreeBSD systems? Another major problem I have is with the sendto function. I've created a raw IP paket and tried to send it out and I get this error: "Invalid argument" Here is the source part for the sendto function. sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)); result = sendto(sockfd, packet, (sizeof(struct ip) + sizeof(struct udphdr) + payload_len), 0, (struct sockaddr *)&sin4, (socklen_t)sizeof(struct sockaddr)); I can't figure out where the problem could be. I even don't know what the error means or where I should look for. Do you have any suggestions? Best regards, Stefan