#pragma once #include #include #include struct sk_route_tbl; struct sk_route_tbl * route_tbl_create(const char * symbol, unsigned max_rules); void route_tbl_set_default_hop(struct sk_route_tbl * tbl_object, struct sk_dev_info * dev_info); struct sk_dev_info * route_tbl_get_default_hop(struct sk_route_tbl * tbl_object); int route_tbl_insert(struct sk_route_tbl * tbl_object, struct in_addr in_addr, struct in_addr in_mask, struct sk_dev_info * dev_info); struct sk_dev_info * route_tbl_lookup(struct sk_route_tbl * tbl_object, struct in_addr in_addr, char * result_is_gateway); /* 目标信息缓存 */ struct sk_destinfo { /* 源端口号 */ in_port_t s_trans_port; /* 目的端口号 */ in_port_t d_trans_port; /* 源IP地址 */ struct in_addr s_in_addr; /* 目标IP地址 */ struct in_addr d_in_addr; /* 源MAC地址 */ struct ether_addr s_eth_addr; /* 目的MAC地址 */ struct ether_addr d_eth_addr; /* 目的设备信息描述符 */ struct sk_dev_info * d_dev_info; /* 目的设备运行时描述符 */ struct sk_dev_desc * d_dev_desc; }; void sk_destinfo_destory(struct sk_destinfo * destinfo); struct sk_destinfo * sk_destinfo_create_by_route(struct sk_app_instance * app_instance, struct in_addr d_in_addr);