⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt_user.c

📁 TP Link 321 Linux Driver
💻 C
📖 第 1 页 / 共 2 页
字号:
				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 + -