]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Application/IpsecConfig/PolicyEntryOperation.c
IpsecConfigApp add the check for the required options (--local, --remote, Auth-algo...
[mirror_edk2.git] / NetworkPkg / Application / IpsecConfig / PolicyEntryOperation.c
index d8330bcce095c682411a6a51ec8832e4c7ca31a5..67209f6247f660df39d952266d251d95413ca06c 100644 (file)
@@ -913,7 +913,7 @@ CreateSadEntry (
   }\r
 \r
   //\r
-  // Convert user imput from string to integer, and fill in the DestAddress in EFI_IPSEC_SA_ID.\r
+  // Convert user input from string to integer, and fill in the DestAddress in EFI_IPSEC_SA_ID.\r
   //\r
   ValueStr = ShellCommandLineGetValue (ParamPackage, L"--tunnel-source");\r
   if (ValueStr != NULL) {\r
@@ -934,10 +934,28 @@ CreateSadEntry (
       *Mask |= SOURCE;\r
     }\r
   }\r
+\r
+  //\r
+  // If it is TunnelMode, then check if the tunnel-source and --tunnel-dest are set\r
+  //\r
+  if ((*Data)->Mode == EfiIPsecTunnel) {\r
+    if ((*Mask & (DEST|SOURCE)) != (DEST|SOURCE)) {\r
+      ShellPrintHiiEx (\r
+        -1,\r
+        -1,\r
+        NULL,\r
+        STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
+        mHiiHandle,\r
+        mAppName,\r
+        L"--tunnel-source --tunnel-dest"\r
+        );\r
+      ReturnStatus = EFI_INVALID_PARAMETER;\r
+    }\r
+  }\r
   ReturnStatus = CreateSpdSelector ((*Data)->SpdSelector, ParamPackage, Mask);\r
 \r
   if (CreateNew) {\r
-    if ((*Mask & (SPI | IPSEC_PROTO )) != (SPI | IPSEC_PROTO )) {\r
+    if ((*Mask & (SPI|IPSEC_PROTO|LOCAL|REMOTE)) != (SPI|IPSEC_PROTO|LOCAL|REMOTE)) {\r
       ShellPrintHiiEx (\r
         -1,\r
         -1,\r
@@ -945,7 +963,7 @@ CreateSadEntry (
         STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
         mHiiHandle,\r
         mAppName,\r
-        L"--spi --ipsec-proto --dest"\r
+        L"--spi --ipsec-proto --local --remote"\r
         );\r
       ReturnStatus = EFI_INVALID_PARAMETER;\r
     } else {\r
@@ -974,7 +992,7 @@ CreateSadEntry (
           ReturnStatus = EFI_INVALID_PARAMETER;\r
         }\r
       } else {\r
-        if ((*Mask & ENCRYPT_ALGO) == 0) {\r
+        if ((*Mask & (ENCRYPT_ALGO|AUTH_ALGO)) != (ENCRYPT_ALGO|AUTH_ALGO) ) {\r
           ShellPrintHiiEx (\r
             -1,\r
             -1,\r
@@ -982,7 +1000,7 @@ CreateSadEntry (
             STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_PARAMETER),\r
             mHiiHandle,\r
             mAppName,\r
-            L"--encrypt-algo"\r
+            L"--encrypt-algo --auth-algo"\r
             );\r
           ReturnStatus = EFI_INVALID_PARAMETER;\r
         } else if ((*Data)->AlgoInfo.EspAlgoInfo.EncAlgoId != IPSEC_EALG_NONE && (*Mask & ENCRYPT_KEY) == 0) {\r
@@ -996,6 +1014,17 @@ CreateSadEntry (
             L"--encrypt-key"\r
             );\r
           ReturnStatus = EFI_INVALID_PARAMETER;\r
+        } else if ((*Data)->AlgoInfo.EspAlgoInfo.AuthAlgoId != IPSEC_AALG_NONE && (*Mask & AUTH_KEY) == 0) {\r
+          ShellPrintHiiEx (\r
+            -1,\r
+            -1,\r
+            NULL,\r
+            STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_PARAMETER),\r
+            mHiiHandle,\r
+            mAppName,\r
+            L"--auth-key"\r
+            );\r
+          ReturnStatus = EFI_INVALID_PARAMETER;\r
         }\r
       }\r
     }\r