The following are the constituents of the WSHA SoH packet. All of the values MUST be present, unless otherwise noted. The values MUST be in this order. TLVs 5, 6, 8, 9, 11, and 12 MUST have at least one instance. They MAY have multiple instances depending on how many firewall, antivirus, and antispyware products are installed. The M and R bits are defined in the Statement of Health for Network Access Protection (NAP) Protocol [MS-SOH] and are ignored by the WSHV upon receipt. All TLV values are sent in network byte order, which is big-endian, except for the Flag02, Version03, Security_Updates_DurationSinceLastSynch17, and Security_Updates_UpdatesFlag19 fields, which are sent in machine byte order and are little-endian.
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
1 0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
2 0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
3 0
|
1
|
|
M01
|
R01
|
TLV_Type01
|
Length01
|
|
NAPSystemHealthID01
|
|
M02
|
R02
|
TLV_Type02
|
Length02
|
|
Flag02
|
|
...
|
|
M03
|
R03
|
TLV_Type03
|
Length03
|
|
Version03
|
|
...
|
|
M04
|
R04
|
TLV_Type04
|
Length04
|
|
Firewall_HealthClassID04
|
M05
|
R05
|
TLV_Type05
|
Length05
|
|
...
|
Firewall_ProductName05 (variable)
|
|
...
|
|
M06
|
R06
|
TLV_Type06
|
Length06
|
|
Firewall_ClientStatusCode06
|
|
M07
|
R07
|
TLV_Type07
|
Length07
|
|
Antivirus_HealthClassID07
|
M08
|
R08
|
TLV_Type08
|
Length08
|
|
...
|
Antivirus_ProductName08 (variable)
|
|
...
|
|
M09
|
R09
|
TLV_Type09
|
Length09
|
|
Antivirus_ClientStatusCode09
|
|
M10
|
R10
|
TLV_Type10
|
Length10
|
|
Antispyware_HealthClassID10
|
M11
|
R11
|
TLV_Type11
|
Length11
|
|
...
|
Antispyware_ProductName11 (variable)
|
|
...
|
|
M12
|
R12
|
TLV_Type12
|
Length12
|
|
Antispyware_ClientStatusCode12
|
|
M13
|
R13
|
TLV_Type13
|
Length13
|
|
Automatic_Updates_HealthClassID13
|
M14
|
R14
|
TLV_Type14
|
Length14
|
|
...
|
Automatic_Updates_ClientStatusCode14
|
|
...
|
M15
|
R15
|
TLV_Type15
|
Length15
|
|
...
|
Security_Updates_HealthClassID15
|
M16
|
R16
|
TLV_Type16
|
|
Length16
|
Security_Updates_ClientStatusCode16
|
|
...
|
M17 (optional)
|
R17 (optional)
|
TLV_Type17 (optional)
|
|
Length17 (optional)
|
Security_Updates_DurationSinceLastSynch17 (optional)
|
|
...
|
|
...
|
M18 (optional)
|
R18 (optional)
|
TLV_Type18 (optional)
|
|
Length18 (optional)
|
Security_Updates_WSUSServerName18 (variable)
|
|
...
|
|
M19 (optional)
|
R19 (optional)
|
TLV_Type19 (optional)
|
Length19 (optional)
|
|
Security_Updates_UpdatesFlag19 (optional)
|
|
...
|
-
M01 (1 bit): The M bit MUST be set to zero.
-
-
R01 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type01 (14 bits): A 14-bit unsigned integer that MUST be set to 2.
-
-
Length01 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the NAPSystemHealthID field.
-
-
NAPSystemHealthID01 (4 bytes): A 32-bit unsigned integer, as specified in section 2.2.3.
-
M02 (1 bit): The M bit MUST be set to zero.
-
-
R02 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type02 (14 bits): A 14-bit unsigned integer that MUST be set to 7.
-
-
Length02 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (8) in bytes of the Flag field.
-
-
Flag02 (8 bytes): Eight bytes, as specified in section 2.2.4.
-
M03 (1 bit): The M bit MUST be set to zero.
-
-
R03 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type03 (14 bits): A 14-bit unsigned integer that MUST be set to 7.
-
-
Length03 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (8) in bytes of the Version field.
-
-
Version03 (8 bytes): Eight bytes, as specified in section 2.2.5.
-
M04 (1 bit): The M bit MUST be set to zero.
-
-
R04 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type04 (14 bits): A 14-bit unsigned integer that MUST be set to 8.
-
-
Length04 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (1) in bytes of the Firewall_HealthClassID field.
-
-
Firewall_HealthClassID04 (1 byte): An 8-bit unsigned integer, as specified in section 2.2.6.
-
M05 (1 bit): The M bit MUST be set to zero.
-
-
R05 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type05 (14 bits): A 14-bit unsigned integer that MUST be set to 10.
-
-
Length05 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length in bytes of the Firewall_ProductName field.
-
Firewall_ProductName05 (variable): A string, as specified in section 2.2.7.
-
M06 (1 bit): The M bit MUST be set to zero.
-
-
R06 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type06 (14 bits): A 14-bit unsigned integer that MUST be set to 11.
-
-
Length06 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the Firewall_ClientStatusCode field.
-
-
Firewall_ClientStatusCode06 (4 bytes): A DWORD, as specified in section 2.2.8.
-
M07 (1 bit): The M bit MUST be set to zero.
-
-
R07 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type07 (14 bits): A 14-bit unsigned integer that MUST be set to 8.
-
-
Length07 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (1) in bytes of the Antivirus_HealthClassID field.
-
-
Antivirus_HealthClassID07 (1 byte): An 8-bit unsigned integer, as specified in section 2.2.6.
-
M08 (1 bit): The M bit MUST be set to zero.
-
-
R08 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type08 (14 bits): A 14-bit unsigned integer that MUST be set to 10.
-
-
Length08 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length of the string in bytes of the Antivirus_ProductName field.
-
Antivirus_ProductName08 (variable): A string, as specified in section 2.2.7.
-
M09 (1 bit): The M bit MUST be set to zero.
-
-
R09 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type09 (14 bits): A 14-bit unsigned integer that MUST be set to 11.
-
-
Length09 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the Antivirus_ClientStatusCode field.
-
-
Antivirus_ClientStatusCode09 (4 bytes): A DWORD, as specified in section 2.2.8.
-
M10 (1 bit): The M bit MUST be set to zero.
-
-
R10 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type10 (14 bits): A 14-bit unsigned integer that MUST be set to 8.
-
-
Length10 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (1) in bytes of the Antispyware_HealthClassID field.
-
-
Antispyware_HealthClassID10 (1 byte): An 8-bit unsigned integer, as specified in section 2.2.6.
-
M11 (1 bit): The M bit MUST be set to zero.
-
-
R11 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type11 (14 bits): A 14-bit unsigned integer that MUST be set to 10.
-
-
Length11 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length of the string in bytes of the Antispyware_ProductName field.
-
Antispyware_ProductName11 (variable): A string, as specified in section 2.2.7.
-
M12 (1 bit): The M bit MUST be set to zero.
-
-
R12 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type12 (14 bits): A 14-bit unsigned integer that MUST be set to 11.
-
-
Length12 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the Antispyware_ClientStatusCode field.
-
-
Antispyware_ClientStatusCode12 (4 bytes): A DWORD, as specified in section 2.2.8.
-
M13 (1 bit): The M bit MUST be set to zero.
-
-
R13 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type13 (14 bits): A 14-bit unsigned integer that MUST be set to 8.
-
-
Length13 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (1) in bytes of the Automatic_Updates_HealthClassID field.
-
-
Automatic_Updates_HealthClassID13 (1 byte): An 8-bit unsigned integer, as specified in section 2.2.6.
-
M14 (1 bit): The M bit MUST be set to zero.
-
-
R14 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type14 (14 bits): A 14-bit unsigned integer that MUST be set to 11.
-
-
Length14 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the Automatic_Updates_ClientStatusCode field.
-
-
Automatic_Updates_ClientStatusCode14 (4 bytes): A DWORD, as specified in section 2.2.8.
-
M15 (1 bit): The M bit MUST be set to zero.
-
-
R15 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type15 (14 bits): A 14-bit unsigned integer that MUST be set to 8.
-
-
Length15 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (1) in bytes of the Security_Updates_HealthClassID field.
-
-
Security_Updates_HealthClassID15 (1 byte): An 8-bit unsigned integer, as specified in section 2.2.6.
-
M16 (1 bit): The M bit MUST be set to zero.
-
-
R16 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type16 (14 bits): A 14-bit unsigned integer that MUST be set to 11.
-
-
Length16 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (4) in bytes of the Security_Updates_ClientStatusCode field.
-
-
Security_Updates_ClientStatusCode16 (4 bytes): A DWORD, as specified in section 2.2.8.
-
M17 (1 bit): The M bit MUST be set to zero.
-
-
R17 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type17 (14 bits): A 14-bit unsigned integer that MUST be set to 7.
-
-
Length17 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (8) in bytes of the Security_Updates_DurationSinceLastSynch field.
-
-
Security_Updates_DurationSinceLastSynch17 (8 bytes): Eight bytes, as specified in section 2.2.9. Not used if Error is returned in the Security_Updates_ClientStatusCode (see section 2.2.8).
-
M18 (1 bit): The M bit MUST be set to zero.
-
-
R18 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type18 (14 bits): A 14-bit unsigned integer that MUST be set to 7.
-
-
Length18 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length of the string in bytes of the Security_Updates_WSUSServerName field.
-
Security_Updates_WSUSServerName18 (variable): Four bytes followed by a variable-length string, as specified in section 2.2.10. Not used if Error is returned in the Security_Updates_ClientStatusCode (see section 2.2.8).
-
M19 (1 bit): The M bit MUST be set to zero.
-
-
R19 (1 bit): The R bit is reserved, and MUST be set to zero when sent and ignored on receipt.
-
-
TLV_Type19 (14 bits): A 14-bit unsigned integer that MUST be set to 7.
-
-
Length19 (2 bytes): A 16-bit unsigned integer in network-byte order that MUST indicate the length (8) in bytes of the Security_Updates_UpdatesFlag field.
-
-
Security_Updates_UpdatesFlag19 (8 bytes): Eight bytes, as specified in section 2.2.11. Not used if Error is returned in the Security_Updates_ClientStatusCode (see section 2.2.8).
Note If Security_Updates_ClientStatusCode is an error, TLVs 17, 18, and 19 will not be present.