Commit a6f041e1 authored by Jondy Zhao's avatar Jondy Zhao

ipwin: add command 'name'

ip:    fix format_interface_name always return re6stnet-lo
parent 4a7bbe97
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
* *
* ipwin guid *MSLOOP re6stnet-lo * ipwin guid *MSLOOP re6stnet-lo
* *
* Get connection name by interface guid:
*
* ipwin name {610B0F3F-06A7-47EF-A38D-EF55503C481F}
*
* Install network adapter and rename connection * Install network adapter and rename connection
* *
* ipwin install "OemWin2k.inf" tap0901 re6stnet-tcp * ipwin install "OemWin2k.inf" tap0901 re6stnet-tcp
...@@ -48,26 +52,62 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid, ...@@ -48,26 +52,62 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid,
OUT BSTR *pGUID, OUT BSTR *pGUID,
OUT BSTR *pErrMsg OUT BSTR *pErrMsg
); );
HRESULT SlaposNetCfgGetNetworkConnectionName(IN LPCWSTR pGUID,
OUT BSTR *pName,
OUT BSTR *pErrMsg
);
void Usage() void Usage()
{ {
printf("Usage: ipwin [command] [options] \n\n\ printf("Usage: ipwin [command] [options] \n\
Get guid of interface:\n\ \n\
ipwin guid HWID CONNECTION-NAME\n\n\ Available command:\n\
For example,\n\ install Install network adapter\n\
ipwin guid *MSLOOP re6stnet-lo\n\ remove Remove network adapter\n\
guid Get GUID of interface by name\n\
name Get name by GUID\n\
codepage Get Windows CodePage\n\
\n\
*install\n\
\n\
Install network adapter and rename connection:\n\
\n\
ipwin install INF-FILE HWID CONNECTION-NAME\n\
\n\ \n\
Install network adapter and rename connection:\n\ For example,\n\
ipwin install INF-FILE HWID CONNECTION-NAME\n\n\
For example,\n\
ipwin install \"OemWin2k.inf\" tap0901 re6stnet-tcp\n\ ipwin install \"OemWin2k.inf\" tap0901 re6stnet-tcp\n\
\n\ \n\
ipwin install \"netloop.inf\" *MSLOOP re6stnet-lo\n\ ipwin install \"netloop.inf\" *MSLOOP re6stnet-lo\n\
\n\ \n\
Remove network adapter:\n\ *remove\n\
ipwin remove HWID CONNECTIION-NAME\n\n\ \n\
For example,\n\ Remove network adapter:\n\
ipwin remove HWID CONNECTIION-NAME\n\
\n\
For example,\n\
ipwin remove tap0901 re6stnet-tcp\n\ ipwin remove tap0901 re6stnet-tcp\n\
\n\n\ \n\
*guid\n\
\n\
Get guid of interface:\n\
ipwin guid HWID CONNECTION-NAME\n\
\n\
For example,\n\
ipwin guid *MSLOOP re6stnet-lo\n\
\n\
*name\n\
\n\
Get connection name by GUID:\n\
ipwin name GUID\n\
\n\
For example,\n\
ipwin name {610B0F3F-06A7-47EF-A38D-EF55503C481F}\n\
\n\
*codepage\n\
\n\
Get codepage of Windows:\n\
ipwin codepage\n\
\n\
\n\
Exit status:\n\ Exit status:\n\
0 if OK,\n\ 0 if OK,\n\
other value if problems\n\ other value if problems\n\
...@@ -276,6 +316,16 @@ int _tmain(int argc, TCHAR * argv[]) ...@@ -276,6 +316,16 @@ int _tmain(int argc, TCHAR * argv[])
printf("%s", hr == S_OK ? pGUID : pErrMsg); printf("%s", hr == S_OK ? pGUID : pErrMsg);
} }
} }
else if (wcscmp(argv[1], L"name") == 0) {
if (argc != 3) {
Usage();
hr = E_FAIL;
}
else {
hr = SlaposNetCfgGetNetworkConnectionName(argv[2], pGUID, pErrMsg);
printf("%s", hr == S_OK ? pGUID : pErrMsg);
}
}
else if (wcscmp(argv[1], L"codepage") == 0) { else if (wcscmp(argv[1], L"codepage") == 0) {
hr = PrintCodePage(0); hr = PrintCodePage(0);
} }
......
...@@ -1022,7 +1022,7 @@ HRESULT SlaposNetCfgWinRemoveNetworkInterface(IN LPCWSTR pHwid, ...@@ -1022,7 +1022,7 @@ HRESULT SlaposNetCfgWinRemoveNetworkInterface(IN LPCWSTR pHwid,
// int length = StringFromGUID2(*pGUID, wszGuid, RT_ELEMENTS(wszGuid)); // int length = StringFromGUID2(*pGUID, wszGuid, RT_ELEMENTS(wszGuid));
// if (!length) // if (!length)
// SetErrBreak(("Failed to create a Guid string")); // SetErrBreak(("Failed to create a Guid string"));
swprintf (strRegLocation, swprintf (strRegLocation,
L"SYSTEM\\CurrentControlSet\\Control\\Network\\" L"SYSTEM\\CurrentControlSet\\Control\\Network\\"
L"{4D36E972-E325-11CE-BFC1-08002BE10318}\\%s", L"{4D36E972-E325-11CE-BFC1-08002BE10318}\\%s",
...@@ -1212,7 +1212,7 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid, ...@@ -1212,7 +1212,7 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid,
OUT BSTR *pErrMsg OUT BSTR *pErrMsg
) )
{ {
HRESULT hrc = S_OK; HRESULT hrc = E_FAIL;
IP_ADAPTER_ADDRESSES *pAdaptAddr = NULL; IP_ADAPTER_ADDRESSES *pAdaptAddr = NULL;
IP_ADAPTER_ADDRESSES *pTmpAdaptAddr = NULL; IP_ADAPTER_ADDRESSES *pTmpAdaptAddr = NULL;
...@@ -1249,6 +1249,85 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid, ...@@ -1249,6 +1249,85 @@ HRESULT SlaposNetCfgGetNetworkInterfaceGuid(IN LPCWSTR pHwid,
if (wcscmp(pConnectionName, pTmpAdaptAddr -> FriendlyName) == 0) { if (wcscmp(pConnectionName, pTmpAdaptAddr -> FriendlyName) == 0) {
memcpy(pGUID, pTmpAdaptAddr -> AdapterName, strlen(pTmpAdaptAddr -> AdapterName)); memcpy(pGUID, pTmpAdaptAddr -> AdapterName, strlen(pTmpAdaptAddr -> AdapterName));
// memcpy(pGUID, &(pTmpAdaptAddr -> NetworkGuid), sizeof(pTmpAdaptAddr -> NetworkGuid)); // memcpy(pGUID, &(pTmpAdaptAddr -> NetworkGuid), sizeof(pTmpAdaptAddr -> NetworkGuid));
hrc = S_OK;
break;
}
pTmpAdaptAddr = pTmpAdaptAddr->Next;
}
}
FREE(pAdaptAddr);
return hrc;
}
HRESULT SlaposNetCfgGetNetworkConnectionName(IN LPCWSTR pGUID,
OUT BSTR *pName,
OUT BSTR *pErrMsg
)
{
HRESULT hrc = E_FAIL;
IP_ADAPTER_ADDRESSES *pAdaptAddr = NULL;
IP_ADAPTER_ADDRESSES *pTmpAdaptAddr = NULL;
DWORD dwRet = 0;
DWORD dwSize = 0x10000;
CHAR guid[256] = {0};
if (WideCharToMultiByte(CP_ACP,
0,
pGUID,
-1,
guid,
256,
NULL,
NULL
) == 0) {
sprintf((char*)pErrMsg, "%s", "WideCharToMultiByte error");
return E_FAIL;
}
dwRet = GetAdaptersAddresses(AF_UNSPEC,
GAA_FLAG_SKIP_UNICAST \
| GAA_FLAG_SKIP_ANYCAST \
| GAA_FLAG_SKIP_MULTICAST \
| GAA_FLAG_SKIP_DNS_SERVER,
NULL,
pAdaptAddr,
&dwSize
);
if (ERROR_BUFFER_OVERFLOW == dwRet) {
FREE(pAdaptAddr);
if (NULL == (pAdaptAddr = (IP_ADAPTER_ADDRESSES*)MALLOC(dwSize)))
return E_FAIL;
dwRet = GetAdaptersAddresses(AF_UNSPEC,
GAA_FLAG_SKIP_UNICAST \
| GAA_FLAG_SKIP_ANYCAST \
| GAA_FLAG_SKIP_MULTICAST \
| GAA_FLAG_SKIP_DNS_SERVER,
NULL,
pAdaptAddr,
&dwSize
);
}
if (NO_ERROR == dwRet) {
pTmpAdaptAddr = pAdaptAddr;
while (pTmpAdaptAddr) {
if ((strcmp(pTmpAdaptAddr -> AdapterName, guid) == 0) &&
pTmpAdaptAddr -> FriendlyName) {
hrc = S_OK;
if (WideCharToMultiByte(CP_ACP,
0,
pTmpAdaptAddr -> FriendlyName,
-1,
(char*)pName,
256,
NULL,
NULL
) == 0) {
sprintf((char*)pErrMsg, "%s", "WideCharToMultiByte error");
hrc = ERROR_BUFFER_OVERFLOW;
}
break; break;
} }
pTmpAdaptAddr = pTmpAdaptAddr->Next; pTmpAdaptAddr = pTmpAdaptAddr->Next;
......
...@@ -300,15 +300,14 @@ function prefix_to_netmask() ...@@ -300,15 +300,14 @@ function prefix_to_netmask()
# #
function format_interface_name() function format_interface_name()
{ {
if [[ "$1" == "" ]]; then [[ -z "$1" ]] && return 1
return 1 [[ -x /usr/bin/ipwin.exe ]] || return 1
fi
local guid="$1" local guid="$1"
if ! [[ "${guid:0:1}" == "{" ]] ; then if [[ ${guid} == {*} ]] ; then
echo $1 echo $(ipwin name ${guid})
else else
echo "re6stnet-lo" echo ${guid}
fi fi
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment