18#include <FreeNOS/System.h>
86 s << ((address >> 24) & 0xff) <<
"."
87 << ((address >> 16) & 0xff) <<
"."
88 << ((address >> 8) & 0xff) <<
"."
89 << ((address & 0xff));
96 const String input = address;
102 if (lst.
count() != 4)
112 addr |= (
byte << shift);
135 const Size addressSize,
137 const Size payloadSize)
147 ERROR(
"failed to perform ARP lookup: result = " << (
int) result);
159 ERROR(
"failed to get transmit packet: result = " << (
int) result);
177 (*pkt)->size +=
sizeof(
Header);
186 const u16 *ptr = (
const u16 *) buffer;
204 sum = (sum >> 16) + (sum & 0xFFFF);
Address Resolution Protocol.
FileSystem::Result lookupAddress(const IPV4::Address *ipAddr, Ethernet::Address *ethAddr)
Lookup Ethernet address for an IP.
u32 getNextInode()
Get next unused inode.
FileSystem::Result registerDirectory(Directory *dir, const char *path)
Register a new Directory.
FileSystem::Result registerFile(File *file, const char *path)
Register a new File.
Internet Control Message Protocol (ICMP)
virtual FileSystem::Result process(const NetworkQueue::Packet *pkt, const Size offset)
Process incoming network packet.
virtual FileSystem::Result initialize()
Perform initialization.
Protocol getProtocolByIdentifier(const NetworkProtocol::Identifier id) const
Convert protocol identifier.
static const String toString(const Address address)
Convert address to string.
virtual ~IPV4()
Destructor.
void setARP(::ARP *arp)
Set ARP instance.
void setUDP(::UDP *udp)
Set UDP instance.
virtual FileSystem::Result getTransmitPacket(NetworkQueue::Packet **pkt, const void *address, const Size addressSize, const Identifier protocol, const Size payloadSize)
Get a new packet for transmission.
::ICMP * m_icmp
ICMP instance.
Address m_address
Current IP address.
virtual FileSystem::Result process(const NetworkQueue::Packet *pkt, const Size offset)
Process incoming network packet.
u16 m_id
Packet ID for IPV4.
virtual FileSystem::Result getAddress(Address *address)
Get current IP address.
static const u16 checksum(const void *buffer, const Size length)
Calculate IP checksum.
virtual FileSystem::Result setAddress(const Address *address)
Set current IP address.
::UDP * m_udp
UDP instance.
static const Address toAddress(const char *address)
Convert string to IPV4 address.
::ARP * m_arp
ARP instance.
void setICMP(::ICMP *icmp)
Set ICMP instance.
virtual bool hasCurrent() const
Check if there is a current item on the List.
Simple linked list template class.
Size count() const
Get the number of items on the list.
Network Device abstract class.
Network protocol abstraction class.
Identifier
List of known network protocol identifiers.
NetworkProtocol & m_parent
Parent upper-layer protocol instance.
virtual FileSystem::Result getTransmitPacket(NetworkQueue::Packet **pkt, const void *address, const Size addressSize, const Identifier protocol, const Size payloadSize)
Get a new packet for transmission.
NetworkServer & m_server
Network server instance.
long toLong(const Number::Base base=Number::Dec) const
Convert the String to a signed long integer.
List< String > split(const char delimiter) const
Split the String into parts separated by a delimiter.
User Datagram Protocol (UDP)
virtual FileSystem::Result process(const NetworkQueue::Packet *pkt, const Size offset)
Process incoming network packet.
void writeBe32(void *data, const u32 input)
Write 32-bit big endian integer.
unsigned int u32
Unsigned 32-bit number.
#define ERROR(msg)
Output an error message.
const u16 readBe16(const void *data)
Read 16-bit big endian integer.
const u32 readBe32(const void *data)
Read 32-bit big endian integer.
unsigned int uint
Unsigned integer number.
const u16 read16(const void *data)
Read 16-bit integer (no conversion)
unsigned short u16
Unsigned 16-bit number.
unsigned int Size
Any sane size indicator cannot go negative.
void writeBe16(void *data, const u16 input)
Write 16-bit big endian integer.
#define DEBUG(msg)
Output a debug message to standard output.
unsigned char u8
Unsigned 8-bit number.
Result
Result code for filesystem Actions.
Ethernet network address.
Represents a network packet.