diff options
Diffstat (limited to 'stack/src/device.c')
| -rw-r--r-- | stack/src/device.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/stack/src/device.c b/stack/src/device.c index e219b0c..059727a 100644 --- a/stack/src/device.c +++ b/stack/src/device.c @@ -112,8 +112,11 @@ err_out: // 创建一个协议栈设备 int sk_device_create(struct sk_instance* instance, struct sk_dev_param* param) { + int ret = 0; + // 检查设备是否已经存在,不允许重复创建 struct sk_dev_info * dev_info = sk_device_lookup(instance, param->symbol); + if(dev_info != NULL) { MR_LOG(INFO, STACK, "StackCreateDevice, StackDevice %s has been created. failed. \n", @@ -139,7 +142,7 @@ int sk_device_create(struct sk_instance* instance, struct sk_dev_param* param) dev_info->mtu = param->mtu; dev_info->promisc = 0; - int ret = route_tbl_insert(instance->default_route, dev_info->in_addr, + ret = route_tbl_insert(instance->default_route, dev_info->in_addr, dev_info->in_mask, dev_info); if (unlikely(ret < 0)) goto err_out; |
