luat_ulwip.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef LUAT_ULWIP_H
  2. #define LUAT_ULWIP_H
  3. #include "luat_base.h"
  4. // #include "luat_msgbus.h"
  5. #include "luat_timer.h"
  6. #include "luat_mem.h"
  7. #include "luat_zbuff.h"
  8. #include "luat_rtos.h"
  9. #include "lwip/opt.h"
  10. #include "lwip/debug.h"
  11. #include "lwip/stats.h"
  12. #include "lwip/netif.h"
  13. #include "lwip/etharp.h"
  14. #include "lwip/dhcp.h"
  15. #include "lwip/ethip6.h"
  16. #include "lwip/udp.h"
  17. // #include "lwip/prot/iana.h"
  18. #include "netif/ethernet.h"
  19. // #include "net_lwip.h"
  20. #include "net_lwip2.h"
  21. #include "luat_network_adapter.h"
  22. #include "dhcp_def.h"
  23. #define USERLWIP_NET_COUNT NW_ADAPTER_INDEX_LWIP_NETIF_QTY
  24. void net_lwip2_set_link_state(uint8_t adapter_index, uint8_t updown);
  25. typedef void (*ulwip_event_cb)(int32_t event, void* ctx);
  26. #define LUAT_ULWIP_DHCP_EVENT_GOT_IP 1
  27. #define LUAT_ULWIP_DHCP_EVENT_TIMEOUT 2
  28. typedef struct ulwip_ctx
  29. {
  30. int output_lua_ref;
  31. struct netif *netif;
  32. uint8_t flags;
  33. uint8_t adapter_index;
  34. uint8_t ip_ready;
  35. uint8_t ip_static;
  36. uint8_t dhcp_enable;
  37. uint8_t reverse; // 反向的
  38. uint16_t use_zbuff_out;
  39. uint16_t mtu;
  40. uint8_t hwaddr[ETH_HWADDR_LEN];
  41. dhcp_client_info_t dhcp_client;
  42. luat_rtos_timer_t dhcp_timer;
  43. ulwip_event_cb event_cb;
  44. }ulwip_ctx_t;
  45. typedef struct netif_cb_ctx {
  46. ulwip_ctx_t* ctx;
  47. struct pbuf *p;
  48. }netif_cb_ctx_t;
  49. // DHCP Client相关
  50. void ulwip_dhcp_client_start(ulwip_ctx_t *ctx);
  51. void ulwip_dhcp_client_stop(ulwip_ctx_t *ctx);
  52. err_t ulwip_etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr);
  53. int ulwip_netif_ip_event(ulwip_ctx_t* ctx);
  54. #ifdef __LUATOS__
  55. int l_dhcp_client_cb(lua_State *L, void* ptr);
  56. int l_ulwip_netif_output_cb(lua_State *L, void* ptr);
  57. #endif
  58. struct netif* ulwip_find_netif(uint8_t adapter_index);
  59. #endif