From: Pierre Chifflier <pchifflier@edenwall.com>
To: Jan Engelhardt <jengelh@medozas.de>
Cc: netfilter-devel@vger.kernel.org, eleblond@inl.fr
Subject: Re: [PATCH 2/3] Add new input plugin UNIXSOCK
Date: Wed, 2 Sep 2009 22:45:39 +0200 [thread overview]
Message-ID: <20090902204538.GA1837@piche.inl.fr> (raw)
In-Reply-To: <alpine.LSU.2.00.0908240031330.30556@fbirervta.pbzchgretzou.qr>
Hi Jan,
Thanks for your feedback.
I'm currently working on a new version of the patch with the changes
(and some other fixes that were found after some real-life tests)
I will send the updated parts ASAP.
Regards,
Pierre
On Mon, Aug 24, 2009 at 12:45:11AM +0200, Jan Engelhardt wrote:
>
> On Sunday 2009-08-23 21:36, Pierre Chifflier wrote:
> >+
> >+/* Size of the receive buffer for the unix socket. */
> >+#define UNIXSOCK_BUFSIZE_DEFAULT 150000
>
> Hm. Would it make some sene to '(ab)use' getsockopt(SO_RCVBUF) as the
> (runtime!) value for the default buffer size?
>
> >+/* Default unix socket path */
> >+#define UNIXSOCK_UNIXPATH_DEFAULT "/tmp/ulogd2.sock"
> >+
> >+
> >+#define UNIX_PATH_MAX 108
> >...
> >+static int _create_unix_socket(const char *unix_path)
> >+{
> >+ int ret = -1;
> >+ struct sockaddr_un server_sock;
> >+ int s;
> >+ socklen_t len;
> >+
> >+ s = socket(AF_UNIX, SOCK_STREAM, 0);
> >+ if (s < 0)
> >+ return -1;
> >+
> >+ server_sock.sun_family = AF_UNIX;
> >+ strncpy(server_sock.sun_path, unix_path, UNIX_PATH_MAX-1);
>
> You can use sizeof(server_sock.sun_path) instead,
> obviating the need for UNIX_PATH_MAX.
>
> Also you should - as printf is called in the error case below -
> ensure it is '\0'-terminated.
>
> >+ len = strlen(server_sock.sun_path) + sizeof(server_sock.sun_family);
>
> len should be sizeof(server_sock)...
>
> >+ ret = bind(s, (struct sockaddr *)&server_sock, len);
>
> ... and since it can be directly passed in:
>
> ret = bind(s, server_sock, sizeof(server_sock));
>
> >+/* callback called from ulogd core when fd is readable */
> >+static int unixsock_instance_read_cb(int fd, unsigned int what, void *param)
> >+{
> >+ struct ulogd_pluginstance *upi = (struct ulogd_pluginstance *)param;
>
> There is no cast needed for void*s.
>
> >+/* callback called from ulogd core when fd is readable */
> >+static int unixsock_server_read_cb(int fd, unsigned int what, void *param)
> >+{
> >+ struct ulogd_pluginstance *upi = (struct ulogd_pluginstance *)param;
>
> Same
>
> >+ struct sockaddr_storage saddr;
> >+
> >+ if (!(what & ULOGD_FD_READ))
> >+ return 0;
> >+
> >+ ulogd_log(ULOGD_DEBUG, "New server connected on unixsock socket\n");
> >+
> >+ len = sizeof(saddr);
> >+ s = accept(fd, (struct sockaddr*)&saddr, &len);
>
> Since only unix sockets can connect, one could probably
> use sockaddr_un over sockaddr_storage (though _storage is always
> a good fallback).
>
> >+struct ulogd_plugin libunixsock_plugin = {
> >+ .name = "UNIXSOCK",
> >+ .input = {
> >+ .type = ULOGD_DTYPE_SOURCE,
> >+ },
> >+ .output = {
> >+ .type = ULOGD_DTYPE_RAW,
> >+ .keys = output_keys,
> >+ .num_keys = sizeof(output_keys)/sizeof(struct ulogd_key),
>
> Hmmm. Does ulogd have an ARRAY_SIZE that could make .num_keys easier?
>
> >+void __attribute__ ((constructor)) init(void);
> >+
> >+void init(void)
> >+{
> >+ ulogd_register_plugin(&libunixsock_plugin);
> >+}
>
> This can become
>
> static void __attribute__((constructor)) init(void) { ... }
>
> Modules are always self-contained shared libraries if I read
> the Makefiles right, so there should not be any benefit of
> giving them 'extern'al linkage.
>
> --
> To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2009-09-02 20:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-23 19:36 Remove debian directory, and add new UNIXSOCK input plugin Pierre Chifflier
2009-08-23 19:36 ` [PATCH 1/3] Remove debian directory Pierre Chifflier
2009-08-23 19:36 ` [PATCH 2/3] Add new input plugin UNIXSOCK Pierre Chifflier
2009-08-23 22:45 ` Jan Engelhardt
2009-09-02 20:45 ` Pierre Chifflier [this message]
2009-09-03 21:23 ` (unknown), Pierre Chifflier
2009-09-03 21:23 ` [PATCH 2/3] Add new input plugin UNIXSOCK Pierre Chifflier
2009-09-03 23:54 ` Jan Engelhardt
2009-09-08 9:35 ` Pierre Chifflier
2009-08-23 19:36 ` [PATCH 3/3] Add helper script pcap2ulog Pierre Chifflier
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=20090902204538.GA1837@piche.inl.fr \
--to=pchifflier@edenwall.com \
--cc=eleblond@inl.fr \
--cc=jengelh@medozas.de \
--cc=netfilter-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).