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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 25 Jan 2007 12:30:17 -0800 From: Stephen Hemminger <shemminger@...ux-foundation.org> To: "Eric W. Biederman" <ebiederm@...ssion.com> Cc: <netdev@...r.kernel.org>, <containers@...ts.osdl.org>, <openib-general@...nib.org>, "Eric W. Biederman" <ebiederm@...ssion.com> Subject: Re: [PATCH RFC 1/31] net: Add net_namespace_type.h to allow for per network namespace variables. Can all this be a nop if a CONFIG option is not selected? > > diff --git a/include/linux/net_namespace_type.h b/include/linux/net_namespace_type.h > new file mode 100644 > index 0000000..8173f59 > --- /dev/null > +++ b/include/linux/net_namespace_type.h > @@ -0,0 +1,52 @@ > +/* > + * Definition of the network namespace reference type > + * And operations upon it. > + */ > +#ifndef __LINUX_NET_NAMESPACE_TYPE_H > +#define __LINUX_NET_NAMESPACE_TYPE_H > + > +#define __pernetname(name) per_net__##name Code obfuscation, please don't do that > +typedef struct {} net_t; No typedef for this please. > + > +#define __data_pernet > + > +/* Look up a per network namespace variable */ > +static inline unsigned long __per_net_offset(net_t net) { return 0; } > + > +/* Like per_net but returns a pseudo variable address that must be moved > + * __per_net_offset() bytes before it will point to a real variable. > + * Useful for static initializers. > + */ > +#define __per_net_base(name) __pernetname(name) > + > +/* Get the network namespace reference from a per_net variable address */ > +#define net_of(ptr, name) ({ net_t net; ptr; net; }) > + > +/* Look up a per network namespace variable */ > +#define per_net(name, net) \ > + (*(__per_net_offset(net), &__per_net_base(name))) > + > +/* Are the two network namespaces the same */ > +static inline int net_eq(net_t a, net_t b) { return 1; } > +/* Get an unsigned value appropriate for hashing the network namespace */ > +static inline unsigned int net_hval(net_t net) { return 0; } > + > +/* Convert to and from to and from void pointers */ > +static inline void *net_to_voidp(net_t net) { return NULL; } > +static inline net_t net_from_voidp(void *ptr) { net_t net; return net; } > + > +static inline int null_net(net_t net) { return 0; } > + > +#define DEFINE_PER_NET(type, name) \ > + __data_pernet __typeof__(type) __pernetname(name) > + > +#define DECLARE_PER_NET(type, name) \ > + extern __typeof__(type) __pernetname(name) > + > +#define EXPORT_PER_NET_SYMBOL(var) \ > + EXPORT_SYMBOL(__pernetname(var)) > +#define EXPORT_PER_NET_SYMBOL_GPL(var) \ > + EXPORT_SYMBOL_GPL(__pernetname(var)) > + > +#endif /* __LINUX_NET_NAMESPACE_TYPE_H */ -- Stephen Hemminger <shemminger@...ux-foundation.org> - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists