summaryrefslogtreecommitdiffstats
path: root/extras/packetforge/ForgeResult.py
blob: c8611a70ae351f9d65a190711f55ba766f86943d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Copyright (c) 2022 Intel and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import ExpressionConverter


class ForgeResult:
    def __init__(self, Header, PacketBuffer, MaskBuffer):
        self.Headers = Header
        self.PacketBuffer = PacketBuffer
        self.MaskBuffer = MaskBuffer

    def ToJSON(self):
        result = {}
        result["Length"] = str(len(self.PacketBuffer))
        result["Packet"] = ExpressionConverter.ByteArrayToString(self.PacketBuffer)
        result["Mask"] = ExpressionConverter.ByteArrayToString(self.MaskBuffer)
        result["Protocol Stack"] = []

        for header in self.Headers:
            head_info = {}
            head_info["name"] = header.Name()
            head_info["Fields"] = []
            for field in header.fields:
                if field.Size == 0:
                    continue
                field_info = {}
                field_info["name"] = field.Field.Name
                field_info["size"] = str(field.Size)
                field_info["value"] = field.Value
                field_info["mask"] = field.Mask
                head_info["Fields"].append(field_info)
            result["Protocol Stack"].append(head_info)

        return result