Protocol Fields

pcapkit.corekit.fields is collection of protocol fields, descriptive of the structure of protocol headers.

All field classes are implemented as FieldBase subclasses, which are responsible for parsing and/or formatting the field value following the pre-defined mechanisms. Below is a brief diagram of the class hierarchy of pcapkit.corekit.fields:

        flowchart LR
    A{{FieldMeta}} -.->|metaclass| B(FieldBase)
    B --> C(Field)

    subgraph numbers [Numerical Fields]
        %% direction TD

        NumberField --> Int64Field & UInt64Field
        NumberField --> Int32Field & UInt32Field
        NumberField --> Int16Field & UInt16Field
        NumberField --> Int8Field & UInt8Field
        NumberField --> EnumField
    end
    C --> NumberField

    subgraph strings [Text Fields]
        %% direction TD

        _TextField --> BytesField & StringField
        _TextField --> BitField
        BytesField --> PaddingField
    end
    C --> _TextField

    subgraph ipaddress [IP Address Fields]
        %% direction TD

        _IPField --> _IPAddressField & _IPInterfaceField
        _IPAddressField --> IPv4AddressField & IPv6AddressField
        _IPInterfaceField --> IPv4InterfaceField & IPv6InterfaceField
    end
    C --> _IPField

    subgraph collections [Container Fields]
        %% direction TD

        ListField --> OptionField
    end
    B --> ListField

    subgraph misc [Miscellaneous Fields]
        %% direction TD

        NoValueField & ConditionalField & PayloadField
        SwitchField & SchemaField & ForwardMatchField
    end
    B --> NoValueField & ConditionalField & PayloadField
    B --> SwitchField & SchemaField & ForwardMatchField

    C --> D([user customisation ...])

    click A "/pcapkit/corekit/fields/field.html#pcapkit.corekit.fields.field.FieldMeta"
    click B "/pcapkit/corekit/fields/field.html#pcapkit.corekit.fields.field.FieldBase"
    click C "/pcapkit/corekit/fields/field.html#pcapkit.corekit.fields.field.Field"

    click NumberField "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.NumberField"
    click Int64Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.Int64Field"
    click UInt64Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.UInt64Field"
    click Int32Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.Int32Field"
    click UInt32Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.UInt32Field"
    click Int16Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.Int16Field"
    click UInt16Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.UInt16Field"
    click Int8Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.Int8Field"
    click UInt8Field "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.UInt8Field"
    click EnumField "/pcapkit/corekit/fields/numbers.html#pcapkit.corekit.fields.numbers.EnumField"

    click _TextField "/pcapkit/corekit/fields/strings.html#pcapkit.corekit.fields.strings._TextField"
    click BytesField "/pcapkit/corekit/fields/strings.html#pcapkit.corekit.fields.strings.BytesField"
    click StringField "/pcapkit/corekit/fields/strings.html#pcapkit.corekit.fields.strings.StringField"
    click BitField "/pcapkit/corekit/fields/strings.html#pcapkit.corekit.fields.strings.BitField"
    click PaddingField "/pcapkit/corekit/fields/strings.html#pcapkit.corekit.fields.strings.PaddingField"

    click _IPField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress._IPField"
    click _IPAddressField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress._IPAddressField"
    click _IPInterfaceField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress._IPInterfaceField"
    click IPv4AddressField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress.IPv4AddressField"
    click IPv6AddressField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress.IPv6AddressField"
    click IPv4InterfaceField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress.IPv4InterfaceField"
    click IPv6InterfaceField "/pcapkit/corekit/fields/ipaddress.html#pcapkit.corekit.fields.ipaddress.IPv6InterfaceField"

    click ListField "/pcapkit/corekit/fields/collections.html#pcapkit.corekit.fields.collections.ListField"
    click OptionField "/pcapkit/corekit/fields/collections.html#pcapkit.corekit.fields.collections.OptionField"

    click NoValueField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.NoValueField"
    click ConditionalField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.ConditionalField"
    click PayloadField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.PayloadField"
    click SwitchField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.SwitchField"
    click SchemaField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.SchemaField"
    click ForwardMatchField "/pcapkit/corekit/fields/misc.html#pcapkit.corekit.fields.misc.ForwardMatchField"