| 303 | # RADIOTAP |
| 304 | |
| 305 | class RadioTap(Packet): |
| 306 | name = "RadioTap" |
| 307 | deprecated_fields = { |
| 308 | "Channel": ("ChannelFrequency", "2.4.3"), |
| 309 | "ChannelFlags2": ("ChannelPlusFlags", "2.4.3"), |
| 310 | "ChannelNumber": ("ChannelPlusNumber", "2.4.3"), |
| 311 | } |
| 312 | fields_desc = [ |
| 313 | ByteField('version', 0), |
| 314 | ByteField('pad', 0), |
| 315 | LEShortField('len', None), |
| 316 | FlagsField('present', None, -32, _rt_present), # noqa: E501 |
| 317 | # Extended presence mask |
| 318 | ConditionalField(PacketListField("Ext", [], next_cls_cb=_next_radiotap_extpm), lambda pkt: pkt.present and pkt.present.Ext), # noqa: E501 |
| 319 | # RadioTap fields - each starts with a ReversePadField |
| 320 | # to handle padding |
| 321 | |
| 322 | # TSFT |
| 323 | ConditionalField( |
| 324 | ReversePadField( |
| 325 | LELongField("mac_timestamp", 0), |
| 326 | 8 |
| 327 | ), |
| 328 | lambda pkt: pkt.present and pkt.present.TSFT), |
| 329 | # Flags |
| 330 | ConditionalField( |
| 331 | FlagsField("Flags", None, -8, _rt_flags), |
| 332 | lambda pkt: pkt.present and pkt.present.Flags), |
| 333 | # Rate |
| 334 | ConditionalField( |
| 335 | ScalingField("Rate", 0, scaling=0.5, |
| 336 | unit="Mbps", fmt="B"), |
| 337 | lambda pkt: pkt.present and pkt.present.Rate), |
| 338 | # Channel |
| 339 | ConditionalField( |
| 340 | ReversePadField( |
| 341 | LEShortField("ChannelFrequency", 0), |
| 342 | 2 |
| 343 | ), |
| 344 | lambda pkt: pkt.present and pkt.present.Channel), |
| 345 | ConditionalField( |
| 346 | FlagsField("ChannelFlags", None, -16, _rt_channelflags), |
| 347 | lambda pkt: pkt.present and pkt.present.Channel), |
| 348 | # dBm_AntSignal |
| 349 | ConditionalField( |
| 350 | ScalingField("dBm_AntSignal", 0, |
| 351 | unit="dBm", fmt="b"), |
| 352 | lambda pkt: pkt.present and pkt.present.dBm_AntSignal), |
| 353 | # dBm_AntNoise |
| 354 | ConditionalField( |
| 355 | ScalingField("dBm_AntNoise", 0, |
| 356 | unit="dBm", fmt="b"), |
| 357 | lambda pkt: pkt.present and pkt.present.dBm_AntNoise), |
| 358 | # Lock_Quality |
| 359 | ConditionalField( |
| 360 | ReversePadField( |
| 361 | LEShortField("Lock_Quality", 0), |
| 362 | 2 |
no test coverage detected
searching dependent graphs…