diff options
| author | Qiuwen Lu <[email protected]> | 2017-05-01 13:36:14 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2017-05-01 13:36:14 +0800 |
| commit | df47aa90a826c90528501bb247d305069caeb873 (patch) | |
| tree | 147701cd2dea53c12e2c3cb4e2079566fd2ec4b5 /app/src/sendpath.c | |
| parent | 7983e813f1d4ba246e4dccb25835a52fbd098224 (diff) | |
配合Janus测试,增加普通路由接口,全量收报接口,修正ARP中过滤非广播的请求报文等问题。
Diffstat (limited to 'app/src/sendpath.c')
| -rw-r--r-- | app/src/sendpath.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/app/src/sendpath.c b/app/src/sendpath.c index 425895e..b98aa93 100644 --- a/app/src/sendpath.c +++ b/app/src/sendpath.c @@ -118,6 +118,29 @@ struct mr_sendpath * marsio_sendpath_create_by_droute(struct mr_vdev * dest_devi return sendpath; } +//TODO: 路由表,默认网关实现 +struct mr_sendpath * marsio_sendpath_create_by_route(struct mr_instance * instance, struct in_addr addr) +{ + struct mr_vdev * target_vdev = NULL; + struct in_addr target_in_addr; + + for (int i = 0; i < instance->nr_vdevs; i++) + { + struct mr_vdev * vdev = &instance->vdevs[i]; + struct vdev * __vdev = vdev->vdi->vdev; + + if (!is_same_subnet(addr, __vdev->in_addr, __vdev->in_mask)) + continue; + + target_in_addr = addr; + target_vdev = vdev; + } + + if (target_vdev == NULL) return NULL; + return marsio_sendpath_create_by_droute(target_vdev, target_in_addr); +} + + struct mr_sendpath * marsio_sendpath_create_by_vdev(struct mr_vdev * dest_device) { struct mr_sendpath * sendpath = malloc(sizeof(struct mr_sendpath)); @@ -127,4 +150,9 @@ struct mr_sendpath * marsio_sendpath_create_by_vdev(struct mr_vdev * dest_device sendpath->target_vdi = dest_device->vdi; sendpath->can_use = 1; return sendpath; +} + +void marsio_sendpath_destory(struct mr_sendpath * sendpath) +{ + free(sendpath); }
\ No newline at end of file |
