Changeset 86820 in vbox for trunk/src/VBox/Frontends/VBoxManage
- Timestamp:
- Nov 6, 2020 11:54:23 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 141264
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageDHCPServer.cpp
r82968 r86820 1027 1027 1028 1028 /** 1029 * Handles the 'start' subcommand. 1030 */ 1031 static DECLCALLBACK(RTEXITCODE) dhcpdHandleStart(PDHCPDCMDCTX pCtx, int argc, char **argv) 1032 { 1033 /* 1034 * Parse the command line. 1035 */ 1036 static const RTGETOPTDEF s_aOptions[] = 1037 { 1038 DHCPD_CMD_COMMON_OPTION_DEFS(), 1039 }; 1040 1041 RTGETOPTSTATE GetState; 1042 int vrc = RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1, 0); 1043 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1044 1045 RTGETOPTUNION ValueUnion; 1046 while ((vrc = RTGetOpt(&GetState, &ValueUnion))) 1047 { 1048 switch (vrc) 1049 { 1050 DHCPD_CMD_COMMON_OPTION_CASES(pCtx, vrc, &ValueUnion); 1051 default: 1052 return errorGetOpt(vrc, &ValueUnion); 1053 } 1054 } 1055 1056 /* 1057 * Locate the server. 1058 */ 1059 ComPtr<IDHCPServer> ptrDHCPServer = dhcpdFindServer(pCtx); 1060 if (ptrDHCPServer.isNotNull()) 1061 { 1062 /* 1063 * We have to figure out the trunk name and type here, which is silly to 1064 * leave to the API client as it's a pain to get right. But here we go... 1065 */ 1066 static char const s_szHostOnlyPrefix[] = "HostInterfaceNetworking-"; 1067 bool fHostOnly = true; 1068 Bstr strTrunkName; 1069 if (pCtx->pszInterface) 1070 strTrunkName = pCtx->pszInterface; 1071 else if (RTStrStartsWith(pCtx->pszNetwork, s_szHostOnlyPrefix)) 1072 strTrunkName = &pCtx->pszNetwork[sizeof(s_szHostOnlyPrefix) - 1]; 1073 else 1074 fHostOnly = false; 1075 1076 Bstr strTrunkType; 1077 if (fHostOnly) 1078 #if defined(RT_OS_WINDOWS) || defined(RT_OS_DARWIN) 1079 strTrunkType = "netadp"; 1080 #else /* lazy implementations: */ 1081 strTrunkType = "netflt"; 1082 #endif 1083 else 1084 strTrunkType = "whatever"; 1085 1086 HRESULT hrc = ptrDHCPServer->Start(strTrunkName.raw(), strTrunkType.raw()); 1087 if (SUCCEEDED(hrc)) 1088 return RTEXITCODE_SUCCESS; 1089 errorArgument("Failed to start the server"); 1090 GlueHandleComErrorNoCtx(ptrDHCPServer, hrc); 1091 } 1092 return RTEXITCODE_FAILURE; 1093 } 1094 1095 1096 /** 1029 1097 * Handles the 'restart' subcommand. 1030 1098 */ … … 1060 1128 if (ptrDHCPServer.isNotNull()) 1061 1129 { 1062 HRESULT hrc; 1063 CHECK_ERROR2(hrc, ptrDHCPServer, Restart()); 1130 HRESULT hrc = ptrDHCPServer->Restart(); 1064 1131 if (SUCCEEDED(hrc)) 1065 1132 return RTEXITCODE_SUCCESS; 1066 errorArgument("Failed to restart server"); 1133 errorArgument("Failed to restart the server"); 1134 GlueHandleComErrorNoCtx(ptrDHCPServer, hrc); 1135 } 1136 return RTEXITCODE_FAILURE; 1137 } 1138 1139 1140 /** 1141 * Handles the 'stop' subcommand. 1142 */ 1143 static DECLCALLBACK(RTEXITCODE) dhcpdHandleStop(PDHCPDCMDCTX pCtx, int argc, char **argv) 1144 { 1145 /* 1146 * Parse the command line. 1147 */ 1148 static const RTGETOPTDEF s_aOptions[] = 1149 { 1150 DHCPD_CMD_COMMON_OPTION_DEFS(), 1151 }; 1152 1153 RTGETOPTSTATE GetState; 1154 int vrc = RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1, 0); 1155 AssertRCReturn(vrc, RTEXITCODE_FAILURE); 1156 1157 RTGETOPTUNION ValueUnion; 1158 while ((vrc = RTGetOpt(&GetState, &ValueUnion))) 1159 { 1160 switch (vrc) 1161 { 1162 DHCPD_CMD_COMMON_OPTION_CASES(pCtx, vrc, &ValueUnion); 1163 default: 1164 return errorGetOpt(vrc, &ValueUnion); 1165 } 1166 } 1167 1168 /* 1169 * Locate the server and perform the requested operation. 1170 */ 1171 ComPtr<IDHCPServer> ptrDHCPServer = dhcpdFindServer(pCtx); 1172 if (ptrDHCPServer.isNotNull()) 1173 { 1174 HRESULT hrc = ptrDHCPServer->Stop(); 1175 if (SUCCEEDED(hrc)) 1176 return RTEXITCODE_SUCCESS; 1177 errorArgument("Failed to stop the server"); 1178 GlueHandleComErrorNoCtx(ptrDHCPServer, hrc); 1067 1179 } 1068 1180 return RTEXITCODE_FAILURE; … … 1169 1281 { "modify", dhcpdHandleAddAndModify, HELP_SCOPE_DHCPSERVER_MODIFY }, 1170 1282 { "remove", dhcpdHandleRemove, HELP_SCOPE_DHCPSERVER_REMOVE }, 1283 { "start", dhcpdHandleStart, HELP_SCOPE_DHCPSERVER_START }, 1171 1284 { "restart", dhcpdHandleRestart, HELP_SCOPE_DHCPSERVER_RESTART }, 1285 { "stop", dhcpdHandleStop, HELP_SCOPE_DHCPSERVER_STOP }, 1172 1286 { "findlease", dhcpdHandleFindLease, HELP_SCOPE_DHCPSERVER_FINDLEASE }, 1173 1287 };
Note:
See TracChangeset
for help on using the changeset viewer.