switch-core.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef __SWITCH_CORE_H
  2. #define __SWITCH_CORE_H
  3. #include <linux/version.h>
  4. #include <linux/list.h>
  5. #define SWITCH_MAX_BUFSZ 4096
  6. #define SWITCH_MEDIA_AUTO 1
  7. #define SWITCH_MEDIA_100 2
  8. #define SWITCH_MEDIA_FD 4
  9. typedef int (*switch_handler)(void *driver, char *buf, int nr);
  10. typedef struct {
  11. const char *name;
  12. switch_handler read, write;
  13. } switch_config;
  14. typedef struct {
  15. struct list_head list;
  16. const char *name;
  17. const char *version;
  18. const char *interface;
  19. int cpuport;
  20. int ports;
  21. int vlans;
  22. const switch_config *driver_handlers, *port_handlers, *vlan_handlers;
  23. void *data;
  24. void *priv;
  25. } switch_driver;
  26. typedef struct {
  27. u32 port, untag, pvid;
  28. } switch_vlan_config;
  29. extern int switch_device_registered (char* device);
  30. extern int switch_register_driver(switch_driver *driver);
  31. extern void switch_unregister_driver(char *name);
  32. extern switch_vlan_config *switch_parse_vlan(switch_driver *driver, char *buf);
  33. extern int switch_parse_media(char *buf);
  34. extern int switch_print_media(char *buf, int media);
  35. static inline char *strdup(const char *str)
  36. {
  37. char *new = kmalloc(strlen(str) + 1, GFP_KERNEL);
  38. strcpy(new, str);
  39. return new;
  40. }
  41. #endif