Date: Thu, 17 Jan 2002 22:58:22 -0500 From: Florent Parent <Florent.Parent@viagenie.qc.ca> To: Archie Cobbs <archie@dellroad.org> Cc: freebsd-net@FreeBSD.ORG Subject: Re: netgraph: how to setsockopt on ksocket node ? Message-ID: <214190000.1011326302@blues.viagenie.qc.ca> In-Reply-To: <200201180216.g0I2G8k23055@arch20m.dellroad.org> References: <200201180216.g0I2G8k23055@arch20m.dellroad.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--==========2018479384========== Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline --On 2002-01-17 18:16:08 -0800 archie@dellroad.org wrote: > Florent Parent writes: >> Anyone has an example on how to setsockopt on a ksocket node in netgraph? >> >> struct opts { >> int level; >> int name; >> int value; >> } myopts = { SOL_SOCKET, SO_REUSEADDR, 1 >> }; >> >> ret = NgSendMsg(cs, epath, NGM_KSOCKET_COOKIE, NGM_KSOCKET_SETOPT, >> (struct ng_ksocket_sockopt *)&myopts, >> sizeof(myopts))); >> >> return error 14 "Bad address". >> >> Did some tracing in ng_ksocket.c and the struct sockopt sent as argument >> to sosetopt() seems to contains sane values: >> >> sopt.sopt_val = 0xc182452c (pointer dereferences to 1) >> sopt.sopt_valsize = 4 > > What kind of socket? UDP > > What version of FreeBSD? 4.5-PRERELEASE (~ 2 weeks old) > That should work.. if the error is coming from the sosetopt() > call then it's a socket problem rather than a netgraph problem. > > What if you create the socket normally and call setsockopt()? Well that works just fine. I've attached normal.c which is a dummy example using standard socket calls, and I've attached netgraph.c which wants to do the same thing using a ksocket node. The latter fails with the following debug: netgraph: SENDING MESSAGE: netgraph: SOCKADDR: { fam=32 len=9 addr=".dummy" } netgraph: NG_MESG : netgraph: vers 2 netgraph: arglen 12 netgraph: flags 0 netgraph: token 3 netgraph: cookie KSOCKET (942710669) netgraph: cmd 7 netgraph: args (12 bytes) netgraph: 0000: ff ff 00 00 00 02 00 00 01 00 00 00 ............ netgraph: sendto(.dummy): Bad address .dummy Cannot setopt the ksocket node: Bad address It has to be the way I'm presenting the socket options arguments through the netgraph interface. This is why I originally asked for any example on doing a setsockopt through netgraph. Thanks for the help Florent. --==========2018479384========== Content-Type: application/octet-stream; name="netgraph.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="netgraph.c"; size=2265 CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIu aD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVk ZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiNpbmNsdWRlIDxlcnJuby5o PgoKI2luY2x1ZGUgPG5ldGdyYXBoLmg+CiNpbmNsdWRlIDxuZXRncmFwaC9uZ19tZXNzYWdlLmg+ CiNpbmNsdWRlIDxuZXRncmFwaC9uZ19rc29ja2V0Lmg+CgojZGVmaW5lIERFQlVHCgojZGVmaW5l IFNFUlZBRERSICIxOTIuMTY4LjMxLjIiIAojZGVmaW5lIFNFUlZfUE9SVCAyMDAyICAKCmludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKewogICAgaW50IGNzLCBkczsKICAgIGludCByZXQ7 CiAgICBzdHJ1Y3QgbmdtX21rcGVlciBrc29jazsKICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47 CiAgICBjaGFyIGVwYXRoWzEyOF07CgogICAgc3RydWN0IG9wdHMgewogICAgICAgIGludCBsZXZl bDsKICAgICAgICBpbnQgbmFtZTsKICAgICAgICBpbnQgdmFsdWU7CiAgICB9IG15b3B0czsKCiAg ICBteW9wdHMubGV2ZWwgPSBTT0xfU09DS0VUOwogICAgbXlvcHRzLm5hbWUgID0gU09fUkVVU0VQ T1JUOwogICAgbXlvcHRzLnZhbHVlID0gMTsKICAgIAogICAgICAvKiBDcmVhdGUgYSBzb2NrZXQg bm9kZSAqLwogICAgaWYgKE5nTWtTb2NrTm9kZShOVUxMLCAmY3MsICZkcykgPT0gLTEpIHsKICAg ICAgICBwZXJyb3IoIkNhbm5vdCBjcmVhdGUgbmV0Z3JhcGggc29ja2V0IG5vZGUiKTsKICAgICAg ICByZXR1cm4gLTE7CiAgICB9CiAgICBzcHJpbnRmKGVwYXRoLCAiLiIpOwogICAgc25wcmludGYo a3NvY2sudHlwZSwgc2l6ZW9mIChrc29jay50eXBlKSwgIiVzIiwgTkdfS1NPQ0tFVF9OT0RFX1RZ UEUpOwogICAgc25wcmludGYoa3NvY2sub3VyaG9vaywgc2l6ZW9mIChrc29jay5vdXJob29rKSwg IiVzIiwgImR1bW15Iik7CiAgICBzbnByaW50Zihrc29jay5wZWVyaG9vaywgc2l6ZW9mIChrc29j ay5wZWVyaG9vayksICIlcyIsICJpbmV0L2RncmFtL3VkcCIpOwoKICAgIGlmICggKHJldCA9IE5n U2VuZE1zZyhjcywgZXBhdGgsIE5HTV9HRU5FUklDX0NPT0tJRSwgTkdNX01LUEVFUiwgJmtzb2Nr LCBzaXplb2Yga3NvY2spKSA8IDApIHsKICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBDYW5ub3Qg Y3JlYXRlIGFuIGtzb2NrZXQgbm9kZTogJXNcbiIsCiAgICAgICAgICAgICAgZXBhdGgsIHN0cmVy cm9yKGVycm5vKSk7CiAgICAgIGV4aXQoLTEpOwogICAgfQogICAgCiNpZmRlZiBERUJVRwogICAg TmdTZXREZWJ1ZygyKTsKI2VuZGlmCiAgICAKICAgIHNwcmludGYoZXBhdGgsICIuJXMiLCBrc29j ay5vdXJob29rKTsKICAgIAogICAgaWYgKCAocmV0ID0gTmdTZW5kTXNnKGNzLCBlcGF0aCwgTkdN X0tTT0NLRVRfQ09PS0lFLCBOR01fS1NPQ0tFVF9TRVRPUFQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cnVjdCBuZ19rc29ja2V0X3NvY2tvcHQgKikmbXlvcHRzLCBzaXplb2YobXlvcHRz KSkpIDwgMCkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgQ2Fubm90IHNldG9wdCB0aGUg a3NvY2tldCBub2RlOiAlc1xuIiwKICAgICAgICAgICAgICAgIGVwYXRoLCBzdHJlcnJvcihlcnJu bykpOwovLyAgICAgICAgZXhpdCAoLTEpOwogICAgfQogCiAgICAKICAgICAgICAvKiBCaW5kIHRo ZSBrc29ja2V0IHRvIG91ciBJUHY0IGFkZHJlc3MgYW5kIG91ciBVRFAgc291cmNlIHBvcnQgKi8K ICAgIGJ6ZXJvKCZzaW4sIHNpemVvZihzaW4pKTsKICAgIHNpbi5zaW5fbGVuID0gc2l6ZW9mKHNp bik7CiAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICBzaW4uc2luX3BvcnQgPSBodG9u cyhTRVJWX1BPUlQpOwogICAgaW5ldF9wdG9uKEFGX0lORVQsIFNFUlZBRERSLCAmc2luLnNpbl9h ZGRyKTsKCiAgICBpZiAoIChyZXQgPSBOZ1NlbmRNc2coY3MsIGVwYXRoLCBOR01fS1NPQ0tFVF9D T09LSUUsIE5HTV9LU09DS0VUX0JJTkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVj dCBzb2NrYWRkciAqKSZzaW4sIHNpemVvZihzaW4pKSkgPCAwKSB7CiAgICAgICAgZnByaW50Zihz dGRlcnIsICIlcyBDYW5ub3QgYmluZCB0aGUga3NvY2tldCBub2RlOiAlc1xuIiwKICAgICAgICAg ICAgICAgIGVwYXRoLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIGV4aXQgKC0xKTsKICAgIH0K ICAgIAogICAgZ2V0Y2hhcigpOwogICAgCiAgICBleGl0ICgwKTsKfQoK --==========2018479384========== Content-Type: application/octet-stream; name="normal.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="normal.c"; size=909 CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2lu Y2x1ZGUgPGFycGEvaW5ldC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KCgojZGVmaW5lIFNFUlZBRERS ICIxOTIuMTY4LjMxLjIiIAojZGVmaW5lIFNFUlZfUE9SVCAyMDAyICAKCmludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKewogICAgaW50IHNvY2tmZDsKICAgIHN0cnVjdCBzb2NrYWRkcl9p biBzZXJ2YWRkcjsgCiAgICBjb25zdCBpbnQgb24gPSAxOwogICAgCiAgICBiemVybygmc2VydmFk ZHIsIHNpemVvZihzZXJ2YWRkcikpOwogICAgc2VydmFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7 CiAgICBzZXJ2YWRkci5zaW5fcG9ydCA9IGh0b25zKFNFUlZfUE9SVCk7CiAgICBpbmV0X3B0b24o QUZfSU5FVCwgU0VSVkFERFIsICZzZXJ2YWRkci5zaW5fYWRkcik7CiAgICAKICAgIHNvY2tmZCA9 IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKICAgIGlmIChzb2NrZmQgPT0gLTEpIHsK ICAgICAgICBwZXJyb3IoInNvY2tldCIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBpZiAo c2V0c29ja29wdChzb2NrZmQsIFNPTF9TT0NLRVQsIFNPX1JFVVNFUE9SVCwgJm9uLCBzaXplb2Yo b24pKSA9PSAtMSkgewogICAgICAgIHBlcnJvcigic29ja29wdCIpOwogICAgICAgIGV4aXQoMSk7 CiAgICB9CiAgICBpZiAoYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNlcnZhZGRy LCBzaXplb2Yoc2VydmFkZHIpKSA9PSAtMSkgewogICAgICAgIHBlcnJvcigiYmluZCIpOwogICAg ICAgIGV4aXQoMSk7CiAgICB9CiAgICBnZXRjaGFyKCk7CiAgICBleGl0KDApOwogICAgCn0K --==========2018479384==========-- 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?214190000.1011326302>