Wireshark 5.1.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
packet-opcua-pubsub.h
1/* packet-opcua-pubsub.h
2 * Define includes, constants, and auxiliary functions for OPC UA PubSub UADP dissection.
3 *
4 * Wireshark - Network traffic analyzer
5 * By Gerald Combs <[email protected]>
6 * Copyright 1998 Gerald Combs
7 *
8 * OPC UA PubSub UADP Dissector
9 * Author: Leon Schmidt <[email protected]>
10 * Copyright (C) 2022 Codewerk GmbH
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 */
14
15
16/* Includes */
17#include <stdio.h>
18
19#include <epan/packet.h>
20#include <epan/expert.h>
21#include <epan/prefs.h>
22#include <epan/reassemble.h>
23#include <epan/dissectors/packet-windows-common.h>
24#include "epan/proto.h"
25
26#include <stdbool.h>
27#include <stdint.h>
28#include <stddef.h>
29
30#include "opcua_simpletypes.h"
31#include "opcua_hfindeces.h"
32#include "opcua_complextypeparser.h"
33#include "opcua_enumparser.h"
34
35
36/* Prototypes */
37/* (Required to prevent [-Wmissing-prototypes] warnings) */
38void proto_reg_handoff_opcua_pubsub(void);
39void proto_register_opcua_pubsub(void);
40
41
42/* default preferences */
43#define OPCUA_PUBSUB_UDP_PORT_RANGE "4840-4850"
44#define OPCUA_PUBSUB_ETHERTYPE 0xB62C
45#define OPCUA_PUBSUB_DSAP 0x00
46
47/* bitmasks for several flag fields */
48#define OPCUA_PUBSUB_FLAGS_PID_ENABLED 0x10
49#define OPCUA_PUBSUB_FLAGS_GROUP_HDR_ENABLED 0x20
50#define OPCUA_PUBSUB_FLAGS_PAYLOAD_HDR_ENABLED 0x40
51#define OPCUA_PUBSUB_FLAGS_EXT_F1_ENABLED 0x80
52
53#define OPCUA_PUBSUB_EXT_F1_PID_TYPE 0x07
54#define OPCUA_PUBSUB_EXT_F1_DATASET_CLASSID_ENABLED 0x08
55#define OPCUA_PUBSUB_EXT_F1_SECURITY_ENABLED 0x10
56#define OPCUA_PUBSUB_EXT_F1_TIMESTAMP_ENABLED 0x20
57#define OPCUA_PUBSUB_EXT_F1_PICO_ENABLED 0x40
58#define OPCUA_PUBSUB_EXT_F1_EXT_F2_ENABLED 0x80
59
60#define OPCUA_PUBSUB_EXT_F2_CHUNK_ENABLED 0x01
61#define OPCUA_PUBSUB_EXT_F2_PROMOTED_FIELDS_ENABLED 0x02
62#define OPCUA_PUBSUB_EXT_F2_NM_TYPE 0x1C
63
64#define OPCUA_PUBSUB_GROUP_HDR_FLAGS_WRITER_GID_ENABLED 0x01
65#define OPCUA_PUBSUB_GROUP_HDR_FLAGS_GROUP_VERSION_ENABLED 0x02
66#define OPCUA_PUBSUB_GROUP_HDR_FLAGS_NM_NUM_ENABLED 0x04
67#define OPCUA_PUBSUB_GROUP_HDR_FLAGS_SEQ_NUM_ENABLED 0x08
68
69#define OPCUA_PUBSUB_SEC_FLAGS_SIGN_ENABLED 0x01
70#define OPCUA_PUBSUB_SEC_FLAGS_ENCRYPT_ENABLED 0x02
71#define OPCUA_PUBSUB_SEC_FLAGS_SEC_FOOTER_ENABLED 0x04
72#define OPCUA_PUBSUB_SEC_FLAGS_KEY_RESET 0x08
73
74#define OPCUA_PUBSUB_DSM_F1_VALID_ENABLED 0x01
75#define OPCUA_PUBSUB_DSM_F1_FIELD_ENC 0x06
76#define OPCUA_PUBSUB_DSM_F1_SEQNUM_ENABLED 0x08
77#define OPCUA_PUBSUB_DSM_F1_STATUS_ENABLED 0x10
78#define OPCUA_PUBSUB_DSM_F1_CONF_MAJOR_VER_ENABLED 0x20
79#define OPCUA_PUBSUB_DSM_F1_CONF_MINOR_VER_ENABLED 0x40
80#define OPCUA_PUBSUB_DSM_F1_DSM_F2_ENABLED 0x80
81
82#define OPCUA_PUBSUB_DSM_F2_DSM_TYPE 0x0F
83#define OPCUA_PUBSUB_DSM_F2_TIMESTAMP_ENABLED 0x10
84#define OPCUA_PUBSUB_DSM_F2_PICO_ENABLED 0x20
85
86/* the various Security Policies (TODO: enum?) */
87#define OPCUA_PUBSUB_SECURITY_POLICY_NONE 0
88#define OPCUA_PUBSUB_SECURITY_POLICY_AES128_CTR 1
89#define OPCUA_PUBSUB_SECURITY_POLICY_AES256_CTR 2
90
91
92/* other macros */
93#define DATASETFIELD_NAME_LENGTH 32