X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/fa8fb4e7c3be746703fee0dd34285f462ba104ec..1e0479ad19b7ff1ac1fa7a835d8f85f7157e786a:/openwrt/target/linux/package/switch/src/switch-core.h diff --git a/openwrt/target/linux/package/switch/src/switch-core.h b/openwrt/target/linux/package/switch/src/switch-core.h index c878d4786..5292469c0 100644 --- a/openwrt/target/linux/package/switch/src/switch-core.h +++ b/openwrt/target/linux/package/switch/src/switch-core.h @@ -1,6 +1,7 @@ #ifndef __SWITCH_CORE_H #define __SWITCH_CORE_H +#include #include #define SWITCH_MAX_BUFSZ 4096 @@ -8,28 +9,51 @@ #define SWITCH_MEDIA_100 2 #define SWITCH_MEDIA_FD 4 -typedef int (*switch_handler)(char *buf, int nr); +#ifndef KERNEL_VERSION +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +#define LINUX_2_4 +#endif + +typedef int (*switch_handler)(void *driver, char *buf, int nr); typedef struct { char *name; switch_handler read, write; } switch_config; - typedef struct { struct list_head list; char *name; + char *version; + char *interface; + int cpuport; int ports; int vlans; switch_config *driver_handlers, *port_handlers, *vlan_handlers; void *data; + void *priv; } switch_driver; +typedef struct { + u32 port, untag, pvid; +} switch_vlan_config; + extern int switch_register_driver(switch_driver *driver); extern void switch_unregister_driver(char *name); -extern int switch_parse_vlan(char *buf); +extern switch_vlan_config *switch_parse_vlan(switch_driver *driver, char *buf); extern int switch_parse_media(char *buf); extern int switch_print_media(char *buf, int media); +static inline char *strdup(char *str) +{ + char *new = kmalloc(strlen(str) + 1, GFP_KERNEL); + strcpy(new, str); + return new; +} + + #endif