Skip site navigation (1)Skip section navigation (2)
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>