Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
packet-mbtcp.h
1 /* packet-mbtcp.h
2  *
3  * Routines for Modbus/TCP dissection
4  * By Riaan Swart <rswart@cs.sun.ac.za>
5  * Copyright 2001, Institute for Applied Computer Science
6  * University of Stellenbosch
7  *
8  * See http://www.modbus.org/ for information on Modbus/TCP.
9  *
10  * Wireshark - Network traffic analyzer
11  * By Gerald Combs <gerald@wireshark.org>
12  * Copyright 1998 Gerald Combs
13  *
14  * SPDX-License-Identifier: GPL-2.0-or-later
15  */
16 #define PORT_MBTCP 502 /* Modbus/TCP located on port 502, with IANA registration */
17 #define PORT_MBRTU 0 /* Modbus RTU over TCP does not have a standard port, default to zero */
18 
19 /* Modbus protocol function codes */
20 #define READ_COILS 1
21 #define READ_DISCRETE_INPUTS 2
22 #define READ_HOLDING_REGS 3
23 #define READ_INPUT_REGS 4
24 #define WRITE_SINGLE_COIL 5
25 #define WRITE_SINGLE_REG 6
26 #define READ_EXCEPT_STAT 7
27 #define DIAGNOSTICS 8
28 #define GET_COMM_EVENT_CTRS 11
29 #define GET_COMM_EVENT_LOG 12
30 #define WRITE_MULT_COILS 15
31 #define WRITE_MULT_REGS 16
32 #define REPORT_SLAVE_ID 17
33 #define READ_FILE_RECORD 20
34 #define WRITE_FILE_RECORD 21
35 #define MASK_WRITE_REG 22
36 #define READ_WRITE_REG 23
37 #define READ_FIFO_QUEUE 24
38 #define ENCAP_INTERFACE_TRANSP 43
39 #define UNITY_SCHNEIDER 90
40 
41 /* Modbus protocol exception codes */
42 #define ILLEGAL_FUNCTION 0x01
43 #define ILLEGAL_ADDRESS 0x02
44 #define ILLEGAL_VALUE 0x03
45 #define SLAVE_FAILURE 0x04
46 #define ACKNOWLEDGE 0x05
47 #define SLAVE_BUSY 0x06
48 #define MEMORY_ERR 0x08
49 #define GATEWAY_UNAVAILABLE 0x0a
50 #define GATEWAY_TRGT_FAIL 0x0b
51 
52 /* Modbus diagnostic subfunction codes */
53 #define RETURN_QUERY_DATA 0x00
54 #define RESTART_COMMUNICATION_OPTION 0x01
55 #define RETURN_DIAGNOSTIC_REGISTER 0x02
56 #define CHANGE_ASCII_INPUT_DELIMITER 0x03
57 #define FORCE_LISTEN_ONLY_MODE 0x04
58 #define CLEAR_COUNTERS_AND_DIAG_REG 0x0A
59 #define RETURN_BUS_MESSAGE_COUNT 0x0B
60 #define RETURN_BUS_COMM_ERROR_COUNT 0x0C
61 #define RETURN_BUS_EXCEPTION_ERROR_COUNT 0x0D
62 #define RETURN_SLAVE_MESSAGE_COUNT 0x0E
63 #define RETURN_SLAVE_NO_RESPONSE_COUNT 0x0F
64 #define RETURN_SLAVE_NAK_COUNT 0x10
65 #define RETURN_SLAVE_BUSY_COUNT 0x11
66 #define RETURN_BUS_CHAR_OVERRUN_COUNT 0x12
67 #define CLEAR_OVERRUN_COUNTER_AND_FLAG 0x14
68 
69 
70 
71 /* Encapsulation Interface codes */
72 #define CANOPEN_REQ_RESP 0x0D
73 #define READ_DEVICE_ID 0x0E
74 
75 /* Event byte codes */
76 #define REMOTE_DEVICE_RECV_EVENT_MASK 0x80
77 #define REMOTE_DEVICE_SEND_EVENT_MASK 0xc0
78 #define REMOTE_DEVICE_SEND_EVENT_VALUE 0x40
79 
80 /* return codes of function classifying packets as query/response */
81 #define QUERY_PACKET 0
82 #define RESPONSE_PACKET 1
83 #define CANNOT_CLASSIFY 2
84 
85 #define MODBUS_PROTOCOL_ID 0
86 
87 /* Preferences for Modbus/TCP Dissector */
88 #define MODBUS_PREF_REGISTER_FORMAT_UINT16 0
89 #define MODBUS_PREF_REGISTER_FORMAT_UINT32 1
90 #define MODBUS_PREF_REGISTER_FORMAT_IEEE_FLOAT 2
91 #define MODBUS_PREF_REGISTER_FORMAT_MODICON_FLOAT 3
92 #define MODBUS_PREF_REGISTER_FORMAT_INT16 4
93 #define MODBUS_PREF_REGISTER_FORMAT_INT32 5
94 
95 typedef struct {
96  guint32 fnum;
97  guint8 function_code;
98  guint16 base_address;
99  guint16 num_reg;
101 
102 /* List contains request data */
103 typedef struct {
104  wmem_list_t *modbus_request_frame_data;
105  gint register_format;
107 
108 /*
109  * Editor modelines
110  *
111  * Local Variables:
112  * c-basic-offset: 4
113  * tab-width: 8
114  * indent-tabs-mode: nil
115  * End:
116  *
117  * ex: set shiftwidth=4 tabstop=8 expandtab:
118  * :indentSize=4:tabSize=8:noTabs=true:
119  */
Definition: packet-mbtcp.h:95
Definition: packet-mbtcp.h:103
Definition: wmem_list.c:23