+ //\r
+ // Before IPsec process, prepared the IP head.\r
+ // If Ip4Output is transmitting RawData, don't update IPv4 header.\r
+ //\r
+ HeadLen = sizeof (IP4_HEAD) + ((OptLen + 3) & (~0x03));\r
+\r
+ if ((IpInstance != NULL) && IpInstance->ConfigData.RawData) {\r
+ RawData = TRUE;\r
+ } else {\r
+ Head->HeadLen = (UINT8) (HeadLen >> 2);\r
+ Head->Id = mIp4Id++;\r
+ Head->Ver = 4;\r
+ RawData = FALSE;\r
+ }\r
+ \r
+ //\r
+ // Call IPsec process.\r
+ //\r
+ Status = Ip4IpSecProcessPacket (\r
+ IpSb, \r
+ &Head, \r
+ &Packet, \r
+ &Option, \r
+ &OptLen, \r
+ EfiIPsecOutBound,\r
+ Context\r
+ );\r
+\r
+ if (EFI_ERROR(Status)) {\r
+ return Status;\r
+ }\r
+\r