MCPcopy Index your code
hub / github.com/secdev/scapy / FlagsField

Class FlagsField

scapy/fields.py:3183–3279  ·  view source on GitHub ↗

Handle Flag type field Make sure all your flags have a label Example (list): >>> from scapy.packet import Packet >>> class FlagsTest(Packet): fields_desc = [FlagsField("flags", 0, 8, ["f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7"])] # noqa: E501 >>> Fla

Source from the content-addressed store, hash-verified

3181
3182
3183class FlagsField(_BitField[Optional[Union[int, FlagValue]]]):
3184 """ Handle Flag type field
3185
3186 Make sure all your flags have a label
3187
3188 Example (list):
3189 >>> from scapy.packet import Packet
3190 >>> class FlagsTest(Packet):
3191 fields_desc = [FlagsField("flags", 0, 8, ["f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7"])] # noqa: E501
3192 >>> FlagsTest(flags=9).show2()
3193 ###[ FlagsTest ]###
3194 flags = f0+f3
3195
3196 Example (str):
3197 >>> from scapy.packet import Packet
3198 >>> class TCPTest(Packet):
3199 fields_desc = [
3200 BitField("reserved", 0, 7),
3201 FlagsField("flags", 0x2, 9, "FSRPAUECN")
3202 ]
3203 >>> TCPTest(flags=3).show2()
3204 ###[ FlagsTest ]###
3205 reserved = 0
3206 flags = FS
3207
3208 Example (dict):
3209 >>> from scapy.packet import Packet
3210 >>> class FlagsTest2(Packet):
3211 fields_desc = [
3212 FlagsField("flags", 0x2, 16, {
3213 0x0001: "A",
3214 0x0008: "B",
3215 })
3216 ]
3217
3218 :param name: field's name
3219 :param default: default value for the field
3220 :param size: number of bits in the field (in bits). if negative, LE
3221 :param names: (list or str or dict) label for each flag
3222 If it's a str or a list, the least Significant Bit tag's name
3223 is written first.
3224 """
3225 ismutable = True
3226 __slots__ = ["names"]
3227
3228 def __init__(self,
3229 name, # type: str
3230 default, # type: Optional[Union[int, FlagValue]]
3231 size, # type: int
3232 names, # type: Union[List[str], str, Dict[int, str]]
3233 **kwargs # type: Any
3234 ):
3235 # type: (...) -> None
3236 # Convert the dict to a list
3237 if isinstance(names, dict):
3238 tmp = ["bit_%d" % i for i in range(abs(size))]
3239 for i, v in names.items():
3240 tmp[int(math.floor(math.log(i, 2)))] = v

Callers 15

rtmsghdrClass · 0.90
ifinfomsgClass · 0.90
ifaddrmsgClass · 0.90
rtmsgClass · 0.90
if_dataClass · 0.90
if_msghdrClass · 0.90
ifa_msghdrClass · 0.90
rt_msghdrClass · 0.90
AVP_10415_630Class · 0.90
OpcDaHeaderMessageClass · 0.90
STAMPTestTLVClass · 0.90
BFDClass · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected