From: Rodolfo Giometti <giometti@enneenne.com>
To: Samuel Ortiz <samuel@sortiz.org>
Cc: netdev@vger.kernel.org
Subject: Re: Generic netlink interface help
Date: Sun, 27 May 2007 19:39:59 +0200 [thread overview]
Message-ID: <20070527173959.GU21180@enneenne.com> (raw)
In-Reply-To: <84po8XY4.1179999810.5490870.samuel@sortiz.org>
On Thu, May 24, 2007 at 09:43:30AM -0000, Samuel Ortiz wrote:
> You could look at Johannes Berg 802.11 generic netlink implementation for
> a good example (net/wireless/nl80211.c in John Linville's tree):
> http://git.kernel.org/?p=linux/kernel/git/linville/wireless-dev.git;a=blob;f=net/wireless/nl80211.c;h=d6a44a386c2b86b81514b08d3c9b324dd2c7d229;hb=HEAD
Looking at that code I suppose that if I want send/receive "struct
pps_netlink_msg" to/from the kernel I have to define:
static struct genl_family pps_gnl_family = {
.id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */
.name = "PPS",
.hdrsize = 0, /* no private header */
.version = PPS_FAMILY_VER,
.maxattr = 1,
};
static struct nla_policy pps_genl_policy[1] = {
[0] = {
.type = NLA_BINARY,
.len = sizeof(struct pps_netlink_msg),
},
};
static struct genl_ops pps_gnl_ops = {
.cmd = 0x1,
.policy = pps_genl_policy,
.doit = pps_genl_data_ready,
};
Then the pps_genl_data_ready() should do:
static int pps_genl_data_ready(struct sk_buff *skb, struct genl_info *info)
{
struct pps_netlink_msg *msg = nla_data(info->attrs[0]);
int cmd, source;
unsigned long timeout;
int ret;
if (!msg)
return -EINVAL;
/* Do the job and put the answer into
msg struct itself... */
genlmsg_unicast(skb, info->snd_pid);
return 0;
}
Is that right?
Thanks,
Rodolfo
--
GNU/Linux Solutions e-mail: giometti@enneenne.com
Linux Device Driver giometti@gnudd.com
Embedded Systems giometti@linux.it
UNIX programming phone: +39 349 2432127
next prev parent reply other threads:[~2007-05-27 17:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-24 8:59 Generic netlink interface help Rodolfo Giometti
2007-05-24 9:43 ` Samuel Ortiz
2007-05-24 9:56 ` Rodolfo Giometti
2007-05-24 10:04 ` Samuel Ortiz
2007-05-24 11:21 ` Rodolfo Giometti
2007-05-24 13:21 ` Paul Moore
2007-05-24 13:51 ` jamal
2007-05-24 16:34 ` Johannes Berg
2007-05-25 22:18 ` Thomas Graf
2007-05-27 13:24 ` Johannes Berg
2007-05-27 13:50 ` Rodolfo Giometti
2007-05-27 13:54 ` Johannes Berg
2007-05-27 17:47 ` Rodolfo Giometti
2007-05-28 14:01 ` Samuel Ortiz
2007-05-30 21:45 ` Thomas Graf
2007-05-27 17:39 ` Rodolfo Giometti [this message]
2007-05-28 1:42 ` Samuel Ortiz
2007-05-28 7:41 ` Rodolfo Giometti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070527173959.GU21180@enneenne.com \
--to=giometti@enneenne.com \
--cc=netdev@vger.kernel.org \
--cc=samuel@sortiz.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.