"""
:mod:`ethernet` -- Ethernet Helper Functions
======================================================
.. module:: ethernet
:synopsis: Ethernet Helper Functions
.. moduleauthor:: Klaus Popp <klauspopp@gmx.de>
"""
from moddy.lib.pdu import Pdu
[docs]def eth_hdr_len():
"""
:return: Ethernet header byte length
"""
return 14
[docs]def eth_bcast_addr():
"""
:return: Ethernet Broadcast MAC Address "FF:FF:FF:FF:FF:FF"
"""
return "FF:FF:FF:FF:FF:FF"
[docs]def eth_flight_time(net_speed, n_bytes):
"""
Compute flight time of an Ethernet frame
If nBytes are below the minimum Ethernet frame length,
the flight time of the minimum frame length is returned.
:param netSpeed: physical link speed in bits/second
:param nBytes: number of bytes to transmit
:return: transmission time on wire in seconds
"""
return ((max(64, n_bytes) * 10) + 96) / net_speed
[docs]def eth_pdu(src, dst, eth_type, payload):
"""
Create an Ethernet Pdu
:param str src: Source MAC address
:param str dst: Destination MAC address
:param eht_type: Ethernet type
:param Pdu payload: Ethernet payload
:return: filled Pdu
"""
return Pdu(
"Eth",
{"src": src, "dst": dst, "type": eth_type, "payld": payload},
eth_hdr_len(),
)