scapy.contrib.pnio_dcp module
- class scapy.contrib.pnio_dcp.DCPAliasNameBlock(_pkt, /, *, option=2, sub_option=6, dcp_block_length=None, block_info=0, alias_name=b'et200sp', padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | ALIAS NAME | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPAliasNameBlock
option
2
sub_option
MultiEnumField
(Depends on 2)6
dcp_block_length
None
block_info
0
alias_name
b'et200sp'
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPBaseBlock(_pkt, /, *, option=1, sub_option=2, dcp_block_length=None, block_info=0, data=b'')[source]
Bases:
Packet
base class for all DCP Blocks
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | DATA | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPBaseBlock
option
1
sub_option
MultiEnumField
(Depends on 1)2
dcp_block_length
None
block_info
0
data
b''
- class scapy.contrib.pnio_dcp.DCPControlBlock(_pkt, /, *, option=5, sub_option=4, dcp_block_length=3, response=2, response_sub_option=2, block_error=0, padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RESPONSE |RESPONSE SUB OP| BLOCK ERROR | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ Fig. DCPControlBlock
option
5
sub_option
MultiEnumField
(Depends on 5)4
dcp_block_length
3
response
2
response_sub_option
MultiEnumField
(Depends on 5)2
block_error
0
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPDeviceIDBlock(_pkt, /, *, option=2, sub_option=3, dcp_block_length=None, block_info=0, vendor_id=42, device_id=787, padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | VENDOR ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DEVICE ID | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPDeviceIDBlock
option
2
sub_option
MultiEnumField
(Depends on 2)3
dcp_block_length
None
block_info
0
vendor_id
42
device_id
787
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPDeviceInitiativeBlock(_pkt, /, *, option=6, sub_option=1, dcp_block_length=None, block_info=0, device_initiative=1)[source]
Bases:
Packet
device initiative DCP block
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | DEVICE INITIATIVE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPDeviceInitiativeBlock
option
6
sub_option
MultiEnumField
(Depends on 6)1
dcp_block_length
None
block_info
0
device_initiative
1
- class scapy.contrib.pnio_dcp.DCPDeviceInstanceBlock(_pkt, /, *, option=2, sub_option=7, dcp_block_length=4, block_info=0, device_instance_high=0, device_instance_low=1, padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO |DEVICE INSTANCE|DEVICE INSTANCE| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPDeviceInstanceBlock
option
2
sub_option
MultiEnumField
(Depends on 2)7
dcp_block_length
4
block_info
0
device_instance_high
0
device_instance_low
1
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPDeviceOptionsBlock(_pkt, /, *, option=2, sub_option=5, dcp_block_length=None, block_info=0, device_options=[], padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | DEVICE OPTIONS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPDeviceOptionsBlock
option
2
sub_option
MultiEnumField
(Depends on 2)5
dcp_block_length
None
block_info
0
device_options
[]
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPDeviceRoleBlock(_pkt, /, *, option=2, sub_option=4, dcp_block_length=4, block_info=0, device_role_details=1, reserved=0, padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO |DEVICE ROLE DET| RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPDeviceRoleBlock
option
2
sub_option
MultiEnumField
(Depends on 2)4
dcp_block_length
4
block_info
0
device_role_details
1
reserved
0
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPFullIPBlock(_pkt, /, *, option=1, sub_option=3, dcp_block_length=None, block_info=1, ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', dnsaddr=[], padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | IP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | NETMASK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | GATEWAY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | DNSADDR | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPFullIPBlock
option
1
sub_option
MultiEnumField
(Depends on 1)3
dcp_block_length
None
block_info
1
ip
'192.168.0.2'
netmask
'255.255.255.0'
gateway
'192.168.0.1'
dnsaddr
[]
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPIPBlock(_pkt, /, *, option=1, sub_option=2, dcp_block_length=None, block_info=1, ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | IP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | NETMASK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | GATEWAY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPIPBlock
option
1
sub_option
MultiEnumField
(Depends on 1)2
dcp_block_length
None
block_info
1
ip
'192.168.0.2'
netmask
'255.255.255.0'
gateway
'192.168.0.1'
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPMACBlock(_pkt, /, *, option=1, sub_option=1, dcp_block_length=None, block_info=0, mac='00:00:00:00:00:00', padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | MAC | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPMACBlock
option
1
sub_option
MultiEnumField
(Depends on 1)1
dcp_block_length
None
block_info
0
mac
'00:00:00:00:00:00'
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPManufacturerSpecificBlock(_pkt, /, *, option=2, sub_option=1, dcp_block_length=None, block_info=0, device_vendor_value=b'et200sp', padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | DEVICE VENDOR VALUE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPManufacturerSpecificBlock
option
2
sub_option
MultiEnumField
(Depends on 2)1
dcp_block_length
None
block_info
0
device_vendor_value
b'et200sp'
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPNameOfStationBlock(_pkt, /, *, option=2, sub_option=2, dcp_block_length=None, block_info=0, name_of_station=b'et200sp', padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | NAME OF STATION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPNameOfStationBlock
option
2
sub_option
MultiEnumField
(Depends on 2)2
dcp_block_length
None
block_info
0
name_of_station
b'et200sp'
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DCPOEMIDBlock(_pkt, /, *, option=2, sub_option=8, dcp_block_length=None, block_info=0, vendor_id=42, device_id=787, padding=b'\x00')[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | DCP BLOCK LENGTH | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BLOCK INFO | VENDOR ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DEVICE ID | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DCPOEMIDBlock
option
2
sub_option
MultiEnumField
(Depends on 2)8
dcp_block_length
None
block_info
0
vendor_id
42
device_id
787
padding
b'\x00'
- class scapy.contrib.pnio_dcp.DeviceOption(_pkt, /, *, option=2, sub_option=5)[source]
Bases:
Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION | SUB OPTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. DeviceOption
option
2
sub_option
MultiEnumField
(Depends on 2)5
- class scapy.contrib.pnio_dcp.ProfinetDCP(_pkt, /, *, service_id=5, service_type=0, xid=16777217, reserved=0, dcp_data_length=None, option=2, sub_option=3, dcp_block_length=0, block_qualifier=1, name_of_station=None, mac='00:00:00:00:00:00', ip='192.168.0.2', netmask='255.255.255.0', gateway='192.168.0.1', dnsaddr=[], alias_name=b'et200sp', dcp_blocks=[])[source]
Bases:
Packet
Profinet DCP Packet
Requests are handled via ConditionalField because here only 1 Block is used every time.
Response can contain 1..n Blocks, for that you have to use one ProfinetDCP Layer with one or multiple DCP*Block Layers:
ProfinetDCP / DCPNameOfStationBlock / DCPDeviceIDBlock ...
Example for a DCP Identify All Request:
Ether(dst="01:0e:cf:00:00:00") / ProfinetIO(frameID=DCP_IDENTIFY_REQUEST_FRAME_ID) / ProfinetDCP(service_id=DCP_SERVICE_ID_IDENTIFY, service_type=DCP_REQUEST, option=255, sub_option=255, dcp_data_length=4)
Example for a DCP Identify Response:
Ether(dst=dst_mac) / ProfinetIO(frameID=DCP_IDENTIFY_RESPONSE_FRAME_ID) / ProfinetDCP( service_id=DCP_SERVICE_ID_IDENTIFY, service_type=DCP_RESPONSE) / DCPNameOfStationBlock(name_of_station="device1")
Example for a DCP Set Request:
Ether(dst=mac) / ProfinetIO(frameID=DCP_GET_SET_FRAME_ID) / ProfinetDCP(service_id=DCP_SERVICE_ID_SET, service_type=DCP_REQUEST, option=2, sub_option=2, dcp_data_length=14, dcp_block_length=10, name_of_station=name, reserved=0)
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SERVICE ID | SERVICE TYPE | XID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DCP DATA LENGTH | OPTION | SUB OPTION | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DCP BLOCK LENGTH | BLOCK QUALIFIER | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAME OF STATION | MAC | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NETMASK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GATEWAY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DNSADDR | ALIAS NAME | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DCP BLOCKS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. ProfinetDCP
service_id
5
service_type
0
xid
16777217
reserved
0
dcp_data_length
None
option
ByteEnumField
(Cond)2
sub_option
MultiEnumField
(Cond, Depends on 2)3
dcp_block_length
LenField
(Cond)0
block_qualifier
ShortEnumField
(Cond)1
name_of_station
MultipleTypeField
(Cond, StrLenField, StrLenField)b'et200sp'
mac
MACField
(Cond)'00:00:00:00:00:00'
ip
IPField
(Cond)'192.168.0.2'
netmask
IPField
(Cond)'255.255.255.0'
gateway
IPField
(Cond)'192.168.0.1'
dnsaddr
FieldListField
(Cond)[]
alias_name
StrLenField
(Cond)b'et200sp'
dcp_blocks
PacketListField
(Cond)[]