All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Emelyanov <xemul@parallels.com>
To: David Miller <davem@davemloft.net>,
	Linux Netdev List <netdev@vger.kernel.org>
Subject: [PATCH 5/13] unix_diag: Basic module skeleton
Date: Thu, 15 Dec 2011 16:44:35 +0400	[thread overview]
Message-ID: <4EE9EBB3.4030504@parallels.com> (raw)
In-Reply-To: <4EE9EB2A.4040909@parallels.com>

Includes basic module_init/_exit functionality, dump/get_exact stubs
and declares the basic API structures for request and response.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>

---
 include/linux/unix_diag.h |   24 +++++++++++++++++++
 net/unix/diag.c           |   57 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+), 0 deletions(-)
 create mode 100644 include/linux/unix_diag.h
 create mode 100644 net/unix/diag.c

diff --git a/include/linux/unix_diag.h b/include/linux/unix_diag.h
new file mode 100644
index 0000000..445184a
--- /dev/null
+++ b/include/linux/unix_diag.h
@@ -0,0 +1,24 @@
+#ifndef __UNIX_DIAG_H__
+#define __UNIX_DIAG_H__
+
+struct unix_diag_req {
+	__u8	sdiag_family;
+	__u8	sdiag_protocol;
+	__u16	pad;
+	__u32	udiag_states;
+	__u32	udiag_ino;
+	__u32	udiag_show;
+	__u32	udiag_cookie[2];
+};
+
+struct unix_diag_msg {
+	__u8	udiag_family;
+	__u8	udiag_type;
+	__u8	udiag_state;
+	__u8	pad;
+
+	__u32	udiag_ino;
+	__u32	udiag_cookie[2];
+};
+
+#endif
diff --git a/net/unix/diag.c b/net/unix/diag.c
new file mode 100644
index 0000000..6be16c0
--- /dev/null
+++ b/net/unix/diag.c
@@ -0,0 +1,57 @@
+#include <linux/types.h>
+#include <linux/spinlock.h>
+#include <linux/sock_diag.h>
+#include <linux/unix_diag.h>
+#include <linux/skbuff.h>
+#include <net/netlink.h>
+#include <net/af_unix.h>
+#include <net/tcp_states.h>
+
+#define UNIX_DIAG_PUT(skb, attrtype, attrlen) \
+	RTA_DATA(__RTA_PUT(skb, attrtype, attrlen))
+
+static int unix_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
+{
+	return 0;
+}
+
+static int unix_diag_get_exact(struct sk_buff *in_skb,
+			       const struct nlmsghdr *nlh,
+			       struct unix_diag_req *req)
+{
+	return -EAFNOSUPPORT;
+}
+
+static int unix_diag_handler_dump(struct sk_buff *skb, struct nlmsghdr *h)
+{
+	int hdrlen = sizeof(struct unix_diag_req);
+
+	if (nlmsg_len(h) < hdrlen)
+		return -EINVAL;
+
+	if (h->nlmsg_flags & NLM_F_DUMP)
+		return netlink_dump_start(sock_diag_nlsk, skb, h,
+					  unix_diag_dump, NULL, 0);
+	else
+		return unix_diag_get_exact(skb, h, (struct unix_diag_req *)NLMSG_DATA(h));
+}
+
+static struct sock_diag_handler unix_diag_handler = {
+	.family = AF_UNIX,
+	.dump = unix_diag_handler_dump,
+};
+
+static int __init unix_diag_init(void)
+{
+	return sock_diag_register(&unix_diag_handler);
+}
+
+static void __exit unix_diag_exit(void)
+{
+	sock_diag_unregister(&unix_diag_handler);
+}
+
+module_init(unix_diag_init);
+module_exit(unix_diag_exit);
+MODULE_LICENSE("GPL");
+MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_SOCK_DIAG, 1 /* AF_LOCAL */);
-- 
1.5.5.6

  parent reply	other threads:[~2011-12-15 12:44 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-15 12:42 [PATCH 0/13] Dumping AF_UNIX sockets via netlink Pavel Emelyanov
2011-12-15 12:42 ` [PATCH 1/13] sock_diag: Move the SOCK_DIAG_BY_FAMILY cmd declaration Pavel Emelyanov
2011-12-15 12:43 ` [PATCH 2/13] sock_diag: Fix module netlink aliases Pavel Emelyanov
2011-12-15 12:43 ` [PATCH 3/13] sock_diag: Generalize requests cookies managements Pavel Emelyanov
2011-12-15 12:44 ` [PATCH 4/13] af_unix: Export stuff required for diag module Pavel Emelyanov
2011-12-15 12:44 ` Pavel Emelyanov [this message]
2011-12-15 12:44 ` [PATCH 6/13] unix_diag: Dumping all sockets core Pavel Emelyanov
2011-12-15 12:45 ` [PATCH 7/13] unix_diag: Dumping exact socket core Pavel Emelyanov
2011-12-15 12:45 ` [PATCH 8/13] unix_diag: Unix socket name NLA Pavel Emelyanov
2011-12-15 12:45 ` [PATCH 9/13] unix_diag: Unix inode info NLA Pavel Emelyanov
2011-12-15 12:45 ` [PATCH 10/13] unix_diag: Unix peer inode NLA Pavel Emelyanov
2011-12-15 12:46 ` [PATCH 11/13] unix_diag: Pending connections IDs NLA Pavel Emelyanov
2011-12-15 12:46 ` [PATCH 12/13] unix_diag: Receive queue lenght NLA Pavel Emelyanov
2011-12-15 12:46 ` [PATCH 13/13] unix_diag: Write it into kbuild Pavel Emelyanov
2011-12-15 13:28 ` [PATCH] iproute: Dump unix sockets via netlink Pavel Emelyanov
2012-01-20 20:51   ` Stephen Hemminger
2011-12-16 18:50 ` [PATCH 0/13] Dumping AF_UNIX " David Miller
2011-12-17  9:54   ` Pavel Emelyanov

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=4EE9EBB3.4030504@parallels.com \
    --to=xemul@parallels.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.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.