lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 12 Dec 2006 13:09:23 -0600
From:	Matt Mackall <mpm@...enic.com>
To:	Keiichi KII <k-keiichi@...jp.nec.com>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [RFC][PATCH 2.6.19 3/6] add interface for netconsole using sysfs

On Tue, Dec 12, 2006 at 03:34:54PM +0900, Keiichi KII wrote:
> From: Keiichi KII <k-keiichi@...jp.nec.com>
> 
> This patch contains the following changes.
> 
> create a sysfs entry for netconsole in /sys/class/misc.
> This entry has elements related to netconsole as follows.
> You can change configuration of netconsole(writable attributes such as IP
> address, port number and so on) and check current configuration of netconsole.
> 
> -+- /sys/class/misc/
>  |-+- netconsole/
>    |-+- port1/
>    | |--- id          [r--r--r--]  unique port id
>    | |--- remove      [-w-------]  if you write something to "remove",
>    | |                             this port is removed.
>    | |--- dev_name    [r--r--r--]  network interface name
>    | |--- local_ip    [rw-r--r--]  source IP to use, writable
>    | |--- local_port  [rw-r--r--]  source port number for UDP packets, writable
>    | |--- local_mac   [r--r--r--]  source MAC address
>    | |--- remote_ip   [rw-r--r--]  port number for logging agent, writable
>    | |--- remote_port [rw-r--r--]  IP address for logging agent, writable
>    | ---- remote_mac  [rw-r--r--]  MAC address for logging agent, writable
>    |--- port2/
>    |--- port3/
>    ...
> 
> Signed-off-by: Keiichi KII <k-keiichi@...jp.nec.com>
> ---
> --- linux-2.6.19/drivers/net/netconsole.c	2006-12-06 14:37:26.842825500 +0900
> +++ enhanced-netconsole/drivers/net/netconsole.c.sysfs	2006-12-06
> 13:32:47.488381000 +0900
> @@ -45,6 +45,8 @@
>  #include <linux/sysrq.h>
>  #include <linux/smp.h>
>  #include <linux/netpoll.h>
> +#include <linux/miscdevice.h>
> +#include <linux/inet.h>
> 
>  MODULE_AUTHOR("Maintainer: Matt Mackall <mpm@...enic.com>");
>  MODULE_DESCRIPTION("Console driver for network interfaces");
> @@ -53,6 +55,7 @@ MODULE_LICENSE("GPL");
>  enum {
>  	MAX_PRINT_CHUNK = 1000,
>  	MAX_CONFIG_LENGTH = 256,
> +	MAC_ADDR_DIGIT = 6,
>  };
> 
>  static char config[MAX_CONFIG_LENGTH];
> @@ -62,19 +65,214 @@ MODULE_PARM_DESC(netconsole, " netconsol
> 
>  struct netconsole_device {
>  	struct list_head list;
> +	struct kobject obj;
>  	spinlock_t netpoll_lock;
>  	int id;
>  	struct netpoll np;
>  };
> 
> +struct netcon_dev_attr {
> +	struct attribute attr;
> +	ssize_t (*show)(struct netconsole_device*, char*);
> +	ssize_t (*store)(struct netconsole_device*, const char*,
> +			 size_t count);
> +};
> +
>  static int add_netcon_dev(const char*);
> +static void setup_netcon_dev_sysfs(struct netconsole_device*);
>  static void cleanup_netconsole(void);
>  static void netcon_dev_cleanup(struct netconsole_device *nd);
> 
> +static int netcon_miscdev_configured = 0;
> +
>  static LIST_HEAD(active_netconsole_dev);
> 
>  static DEFINE_SPINLOCK(netconsole_dev_list_lock);
> 
> +#define SHOW_CLASS_ATTR(field, type, format, ...) \
> +static ssize_t show_##field(type, char *buf) \
> +{ \
> +     return sprintf(buf, format, __VA_ARGS__); \
> +} \

I see this sort of thing is pretty common with sysfs stuff.. but yuck.

> +static ssize_t show_netcon_dev_attr(struct kobject *kobj,
> +				    struct attribute *attr,
> +				    char *buffer)
> +{
> +	struct netcon_dev_attr *na = container_of(attr, struct netcon_dev_attr,
> +						  attr);
> +	struct netconsole_device * nd =
> +		container_of(kobj, struct netconsole_device, obj);
> +	if (na->show) {
> +		return na->show(nd, buffer);
> +	} else {
> +		return -EACCES;
> +	}

Kernel style is to skip the braces for single statement clauses.

> +	if (misc_register(&netcon_miscdev)) {
> +		printk(KERN_INFO
> +		       "netconsole: unable netconsole misc device\n");

This error message seems to be missing a word or two.

-- 
Mathematics is the supreme nostalgia of our time.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ