📄 rt_user.c
字号:
else { printf("set mesh security::invalid WPA key and set security as OPEN-NONE\n\n"); EncrypType = 0; } } else { printf("set security as OPEN-NONE\n\n"); EncrypType = 0; } // Set Mesh Encryption Type MeshSecurity.EncrypType = EncrypType; // Set Default Key Index if (KeyIndex >= 1 && KeyIndex <= 4) MeshSecurity.KeyIndex = KeyIndex; // valid value : 1~4 else MeshSecurity.KeyIndex = 1; // In WPANONE mode, the default key shall be 1. if ((EncrypType == 2) || (EncrypType == 3)) MeshSecurity.KeyIndex = 1; strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(MESH_SECURITY_INFO); wrq.u.data.pointer = (char *)&MeshSecurity; wrq.u.data.flags = RT_OID_802_11_MESH_SECURITY_INFO; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh security\n\n"); goto rtuser_exit; } } break; case OID_802_11_MESH_ID: { // Get Mesh ID printf("\nrtuser::set OID_802_11_MESH_ID \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = MAX_MESH_ID_LEN; wrq.u.data.pointer = data; wrq.u.data.flags = OID_802_11_MESH_ID; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::get mesh id\n\n"); goto rtuser_exit; } printf("Mesh-Id=%s\n", (unsigned char *)wrq.u.data.pointer); } break; case RT_OID_802_11_MESH_ID: { unsigned char MeshId[MAX_MESH_ID_LEN]; // Set Mesh ID printf("\nrtuser::set RT_OID_802_11_MESH_ID \n\n"); memset(MeshId, 0, sizeof(MAX_MESH_ID_LEN)); memcpy(MeshId, "SampleMesh", strlen("SampleMesh") + 1); strcpy(wrq.ifr_name, name); wrq.u.data.length = strlen("SampleMesh"); wrq.u.data.pointer = (char *)&MeshId; wrq.u.data.flags = RT_OID_802_11_MESH_ID; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh Id\n\n"); goto rtuser_exit; } } break; case OID_802_11_MESH_AUTO_LINK: { unsigned char MeshAutoLink; // Get Mesh Auto Link Setting printf("\nrtuser::set OID_802_11_MESH_AUTO_LINK \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = 1; wrq.u.data.pointer = (char *)&MeshAutoLink; wrq.u.data.flags = OID_802_11_MESH_AUTO_LINK; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::get mesh auto link setting\n\n"); goto rtuser_exit; } printf("Mesh-Auto Link=%s\n", MeshAutoLink == 1 ? "Enable" : "Disable"); } break; case RT_OID_802_11_MESH_AUTO_LINK: { unsigned char MeshAutoLink; // Set Mesh Auto Link printf("\nrtuser::set RT_OID_802_11_MESH_AUTO_LINK \n\n"); MeshAutoLink = 0; strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(unsigned char); wrq.u.data.pointer = (char *)&MeshAutoLink; wrq.u.data.flags = RT_OID_802_11_MESH_AUTO_LINK; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh auto link\n\n"); goto rtuser_exit; } } break; case RT_OID_802_11_MESH_ADD_LINK: { unsigned char PeerMac[MAC_ADDR_LEN] = {0x0, 0xc, 0x43, 0x28, 0x61, 0x10}; // Set Peer Link MAC Addr. printf("\nrtuser::set RT_OID_802_11_MESH_ADD_LINK \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(PeerMac); wrq.u.data.pointer = (char *)&PeerMac; wrq.u.data.flags = RT_OID_802_11_MESH_ADD_LINK; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh add link\n\n"); goto rtuser_exit; } } break; case RT_OID_802_11_MESH_DEL_LINK: { unsigned char PeerMac[MAC_ADDR_LEN] = {0x0, 0xc, 0x43, 0x28, 0x61, 0x10}; // Set Peer Link MAC Addr. printf("\nrtuser::set RT_OID_802_11_MESH_DEL_LINK \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(PeerMac); wrq.u.data.pointer = (char *)&PeerMac; wrq.u.data.flags = RT_OID_802_11_MESH_DEL_LINK; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh del link\n\n"); goto rtuser_exit; } } break; case OID_802_11_MESH_LINK_STATUS: { PMESH_LINK_INFO pMeshLinkInfo; PMESH_LINK_ENTRY_INFO pMeshLinkEntry; int ii; // Get Mesh Link Info printf("\nrtuser::set OID_802_11_MESH_LINK_STATUS \n\n"); memset(data, 0, sizeof(MESH_LINK_INFO)); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(MESH_LINK_INFO); wrq.u.data.pointer = data; wrq.u.data.flags = OID_802_11_MESH_LINK_STATUS; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::get mesh link info\n\n"); goto rtuser_exit; } pMeshLinkInfo = (PMESH_LINK_INFO)wrq.u.data.pointer; for(ii = 0; ii < MAX_MESH_LINK_NUM; ii++) { pMeshLinkEntry = (PMESH_LINK_ENTRY_INFO)&pMeshLinkInfo->Entry[ii]; printf(" PeerMac = %02x:%02x:%02x:%02x:%02x:%02x:", pMeshLinkEntry->PeerMacAddr[0], pMeshLinkEntry->PeerMacAddr[1], pMeshLinkEntry->PeerMacAddr[2], pMeshLinkEntry->PeerMacAddr[3], pMeshLinkEntry->PeerMacAddr[4], pMeshLinkEntry->PeerMacAddr[5]); printf(" Status =%d\n", pMeshLinkEntry->Status); //0:idle //1:connected. } } break; case OID_802_11_MESH_LIST: { PMESH_NEIGHBOR_INFO pMeshNeighInfo; PMESH_NEIGHBOR_ENTRY_INFO pMeshNeighEntry; int ii; // Get Mesh Neighbor Info printf("\nrtuser::set OID_802_11_MESH_LIST \n\n"); memset(data, 0, sizeof(MESH_NEIGHBOR_INFO)); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(MESH_NEIGHBOR_INFO); wrq.u.data.pointer = data; wrq.u.data.flags = OID_802_11_MESH_LIST; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::get mesh neighbor info\n\n"); goto rtuser_exit; } pMeshNeighInfo = (PMESH_NEIGHBOR_INFO)wrq.u.data.pointer; for(ii = 0; ii < pMeshNeighInfo->num; ii++) { pMeshNeighEntry = (PMESH_NEIGHBOR_ENTRY_INFO)&pMeshNeighInfo->Entry[ii]; printf("Rssi =%d", pMeshNeighEntry->Rssi); printf(" PeerMac = %02x:%02x:%02x:%02x:%02x:%02x:", pMeshNeighEntry->MacAddr[0], pMeshNeighEntry->MacAddr[1], pMeshNeighEntry->MacAddr[2], pMeshNeighEntry->MacAddr[3], pMeshNeighEntry->MacAddr[4], pMeshNeighEntry->MacAddr[5]); printf(" MeshId = %s", pMeshNeighEntry->MeshId); printf(" Ch = %d", pMeshNeighEntry->Channel); printf(" Status =%d", pMeshNeighEntry->Status); // 0:idle, 1:connected. switch(pMeshNeighEntry->MeshEncrypType) { case 0: printf(" Encryption = OPEN-NONE\n"); break; case 1: printf(" Encryption = OPEN-WEP\n"); break; case 2: printf(" Encryption = WPANONE-TKIP\n"); break; case 3: printf(" Encryption = WPANONE-AES\n"); break; default: printf(" Encryption = OPEN-NONE\n"); break; } } } break; case RT_OID_802_11_MESH_MAX_TX_RATE: { unsigned char MaxTxRate; // Set Mesh Auto Link printf("\nrtuser::set RT_OID_802_11_MESH_MAX_TX_RATE \n\n"); MaxTxRate = 11; strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(unsigned char); wrq.u.data.pointer = (char *)& MaxTxRate; wrq.u.data.flags = RT_OID_802_11_MESH_MAX_TX_RATE; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh max tx rate.\n\n"); goto rtuser_exit; } } break; case OID_802_11_MESH_MAX_TX_RATE: { unsigned char MaxTxRate; // Set Mesh Auto Link printf("\nrtuser::set OID_802_11_MESH_MAX_TX_RATE \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(unsigned char); wrq.u.data.pointer = (char *)& MaxTxRate; wrq.u.data.flags = OID_802_11_MESH_MAX_TX_RATE; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh max tx rate.\n\n"); goto rtuser_exit; } printf("Current Mesh Tx rate=%d\n", MaxTxRate); } break; case RT_OID_802_11_MESH_CHANNEL: { unsigned char Channel; // Set Mesh Channel printf("\nrtuser::set RT_OID_802_11_MESH_CHANNEL \n\n"); Channel = 11; strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(unsigned char); wrq.u.data.pointer = (char *)& Channel; wrq.u.data.flags = RT_OID_802_11_MESH_CHANNEL; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::set mesh channel.\n\n"); goto rtuser_exit; } } break; case OID_802_11_MESH_CHANNEL: { unsigned char Channel; // Get Mesh Channel printf("\nrtuser::set OID_802_11_MESH_CHANNEL \n\n"); strcpy(wrq.ifr_name, name); wrq.u.data.length = sizeof(unsigned char); wrq.u.data.pointer = (char *)& Channel; wrq.u.data.flags = OID_802_11_MESH_CHANNEL; ret = ioctl(socket_id, RT_PRIV_IOCTL, &wrq); if(ret != 0) { printf("\nrtuser::error::get mesh channel.\n\n"); goto rtuser_exit; } printf("Current Mesh Channel=%d\n", Channel); } break; default: printf("\nUnsupported OID type\n"); break; } rtuser_exit: if(socket_id >= 0) close(socket_id); if (data != NULL) free(data); if(ret) return ret; else return 0;}// endof main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -