From owner-freebsd-net@FreeBSD.ORG Tue Nov 18 23:07:30 2003 Return-Path: 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 1544C16A4CE for ; Tue, 18 Nov 2003 23:07:30 -0800 (PST) Received: from sccrmhc12.comcast.net (sccrmhc12.comcast.net [204.127.202.56]) by mx1.FreeBSD.org (Postfix) with ESMTP id 85CFF43FBF for ; Tue, 18 Nov 2003 23:07:28 -0800 (PST) (envelope-from cristjc@comcast.net) Received: from blossom.cjclark.org (12-234-156-182.client.attbi.com[12.234.156.182]) by comcast.net (sccrmhc12) with ESMTP id <2003111907072701200nvs2ce>; Wed, 19 Nov 2003 07:07:27 +0000 Received: from blossom.cjclark.org (localhost. [127.0.0.1]) by blossom.cjclark.org (8.12.9p2/8.12.8) with ESMTP id hAJ77ksb012965 for ; Tue, 18 Nov 2003 23:07:46 -0800 (PST) (envelope-from cristjc@comcast.net) Received: (from cjc@localhost) by blossom.cjclark.org (8.12.9p2/8.12.9/Submit) id hAJ77kSN012964 for net@freebsd.org; Tue, 18 Nov 2003 23:07:46 -0800 (PST) (envelope-from cristjc@comcast.net) X-Authentication-Warning: blossom.cjclark.org: cjc set sender to cristjc@comcast.net using -f Date: Tue, 18 Nov 2003 23:07:45 -0800 From: "Crist J. Clark" To: net@freebsd.org Message-ID: <20031119070745.GE10828@blossom.cjclark.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i X-URL: http://people.freebsd.org/~cjc/ Subject: netgraph(3) NGM_KSOCKET_BIND X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: "Crist J. Clark" List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Nov 2003 07:07:30 -0000 OK, an easy one. I am trying to do some netgraph(3) coding in userland. From how I read the documentation, this should work. Before I go learn all of the netraph(4) kernel code to understand the error message, could someone tell me how this is supposed to look? I'm sure it's something obvious that I have missed. The attached test program returns, # ./ngtest ngtest: failed to bind ksocket: Invalid argument The program, #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEFAULT_PORT 10000 #define OUR_HOOK_CTL "ctl_hook" int main() { int cs, ds; struct sockaddr_in laddr; struct ngm_mkpeer ngmkp; if (NgMkSockNode(NULL, &cs, &ds) == -1) err(errno, "failed to create netgraph socket"); strcpy(ngmkp.type, NG_KSOCKET_NODE_TYPE); strcpy(ngmkp.ourhook, OUR_HOOK_CTL); strcpy(ngmkp.peerhook, "inet/dgram/udp"); if (NgSendMsg(cs, ".", NGM_GENERIC_COOKIE, NGM_MKPEER, &ngmkp, sizeof ngmkp) == -1) err(errno, "failed to create ksocket node"); bzero(&laddr, sizeof laddr); laddr.sin_family = AF_INET; laddr.sin_addr.s_addr = INADDR_ANY; laddr.sin_port = htons(DEFAULT_PORT); if (NgSendMsg(cs, OUR_HOOK_CTL, NGM_KSOCKET_COOKIE, NGM_KSOCKET_BIND, &laddr, sizeof laddr) == -1) err(errno, "failed to bind ksocket"); return 0; } -- Crist J. Clark | cjclark@alum.mit.edu | cjclark@jhu.edu http://people.freebsd.org/~cjc/ | cjc@freebsd.org