+/**\r
+ Output an IP6 address value to the HTML page\r
+\r
+ @param [in] SocketFD Socket file descriptor\r
+ @param [in] pPort The WSDT_PORT structure address\r
+ @param [in] Value Value to display\r
+ @param [in] bFirstValue TRUE if first value\r
+ @param [in] bLastValue TRUE if last value\r
+ @param [in] bZeroSuppression TRUE while zeros are being suppressed\r
+ @param [in] pbZeroSuppression Address to receive TRUE when zero suppression\r
+ has started, use NULL if next colon value not\r
+ needed.\r
+\r
+ @retval EFI_SUCCESS Successfully displayed the address\r
+**/\r
+EFI_STATUS\r
+HttpSendIp6Value (\r
+ IN int SocketFD,\r
+ IN WSDT_PORT * pPort,\r
+ IN UINT16 Value,\r
+ IN BOOLEAN bFirstValue,\r
+ IN BOOLEAN bLastValue,\r
+ IN BOOLEAN bZeroSuppression,\r
+ IN BOOLEAN * pbZeroSuppression\r
+ )\r
+{\r
+ BOOLEAN bZeroSuppressionStarting;\r
+ UINT32 Digit;\r
+ EFI_STATUS Status;\r
+\r
+ //\r
+ // Use break instead of goto\r
+ //\r
+ bZeroSuppressionStarting = FALSE;\r
+ Status = EFI_SUCCESS;\r
+ for ( ; ; ) {\r
+ //\r
+ // Display the leading colon if necessary\r
+ //\r
+ if ( bZeroSuppression && ( bLastValue || ( 0 != Value ))) {\r
+ Status = HttpSendByte ( SocketFD, pPort, ':' );\r
+ if ( EFI_ERROR ( Status )) {\r
+ break;\r
+ }\r
+ }\r
+\r
+ //\r
+ // Skip over a series of zero values\r
+ //\r
+ bZeroSuppressionStarting = (BOOLEAN)( 0 == Value );\r
+ if ( !bZeroSuppressionStarting ) {\r
+ //\r
+ // Display the value\r
+ //\r
+ Digit = ( Value >> 4 ) & 0xf;\r
+ Status = HttpSendHexValue ( SocketFD,\r
+ pPort,\r
+ Digit );\r
+ if ( EFI_ERROR ( Status )) {\r
+ break;\r
+ }\r
+ Digit = Value & 0xf;\r
+ Status = HttpSendHexValue ( SocketFD,\r
+ pPort,\r
+ Digit );\r
+ if ( EFI_ERROR ( Status )) {\r
+ break;\r
+ }\r
+ Digit = ( Value >> 12 ) & 0xf;\r
+ Status = HttpSendHexValue ( SocketFD,\r
+ pPort,\r
+ Digit );\r
+ if ( EFI_ERROR ( Status )) {\r
+ break;\r
+ }\r
+ Digit = ( Value >> 8 ) & 0xf;\r
+ Status = HttpSendHexValue ( SocketFD,\r
+ pPort,\r
+ Digit );\r
+ if ( EFI_ERROR ( Status )) {\r
+ break;\r
+ }\r
+ }\r
+\r
+ //\r
+ // Display the trailing colon if necessary\r
+ //\r
+ if (( !bLastValue ) && ( bFirstValue || ( 0 != Value ))) {\r
+ Status = HttpSendByte ( SocketFD, pPort, ':' );\r
+ }\r
+ break;\r
+ }\r
+\r
+ //\r
+ // Return the next colon display\r
+ if ( NULL != pbZeroSuppression ) {\r
+ *pbZeroSuppression = bZeroSuppressionStarting;\r
+ }\r
+\r
+ //\r
+ // Return the operation status\r
+ //\r
+ return Status;\r
+}\r
+\r
+\r