25 const void* optval,
uint32_t optlen);
43 (*socket)->
family = family;
44 (*socket)->type =
type;
48 LOG2_WARN(
"Socket",
"socket ops not initialized");
56#define MYIP "192.168.100.80"
70 if (nic->pq_tail == nic->pq_head) {
110 LOG2_INFO(
"Socket",
"arp packet from %s", ip_buf);
114 LOG2_INFO(
"ARP",
"success targetting me");
128 const void* optval,
uint32_t optlen) {
void arp_reply(netdev_t *dev, uint32_t ip, uint8_t out_mac[6])
volatile uint32_t buffer[5]
void handle_icmp(netdev_t *dev, struct ipv4_header *ip, uint8_t mac_dst[6])
void ioforge_clear_rx_queue(struct ioforge_nic_service *nic, struct pending_rx *rx)
int ioforge_receive_pending_queue(struct ioforge_nic_service *nic, struct pending_rx *rx)
void * kalloc(size_t size)
netdev_t * lookup_netdev(char *name)
char * vxInetNtoa(uint32_t ip, char *buffer)
uint32_t vxInetAddr(const char *addr)
static uint16_t vxHtons(uint16_t value)
#define LOG2_WARN(mod, fmt,...)
#define LOG2_INFO(mod, fmt,...)
void * vxSlabAlloc(struct slab_cache *cache)
void vxCreateSlabCache(struct slab_cache **cache, const char *name, const size_t obj_size, size_t alignment, const uintptr_t virt_addr)
static int socket_bind(socket_t *socket, sockaddr_in_t *addr, uint32_t len)
void vxSocket(sock_family_t family, sock_type_t type, uint16_t protocol, socket_t **socket)
static int socket_set_sockopt(socket_t *socket, uint32_t level, uint32_t optname, const void *optval, uint32_t optlen)
static struct slab_cache * socket_cache
static int socket_receive(socket_t *socket, void *buffer, size_t size)
struct sockaddr_in sockaddr_in_t
struct socket_ops socket_ops_t
void memcopy(void *dest, void *src, size_t size)
struct ioforge_nic_service * nic
int(* recv)(socket_t *socket, void *buffer, size_t size)
int(* set_sockopt)(socket_t *socket, uint32_t level, uint32_t optname, const void *optval, uint32_t optlen)
int(* bind)(socket_t *socket, sockaddr_in_t *addr, uint32_t len)
void handle_tcp(netdev_t *dev, struct ipv4_header *ip, uint8_t mac_dst[6])