Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
netdev.h
Go to the documentation of this file.
1#ifndef __NET__NETDEV_H__
2#define __NET__NETDEV_H__
3
4#include <type.h>
5#include "net/netbuff.h"
6#define NETDEV_NAME_MAX_LEN 64
7
8#include <type.h>
10
11typedef enum {
12 NETDEV_TYPE_ETHERNET = 0, // Hardware fisik (E1000, RTL8139, dll)
13 NETDEV_TYPE_LOOPBACK, // Virtual localhost (127.0.0.1)
14 NETDEV_TYPE_BRIDGE, // Virtual switch
15 NETDEV_TYPE_TUN, // Layer 3 Tunnel
16 NETDEV_TYPE_TAP // Layer 2 Tunnel
18
19typedef struct netdev netdev_t;
20struct netdev_ops {
21 int (*init)(struct netdev* dev);
22 int (*open)(struct netdev* dev);
23 int (*stop)(struct netdev* dev);
24 int (*transmit)(struct netdev* dev, uint8_t* packet, uint16_t len);
25 int (*set_mac)(struct netdev* dev, const uint8_t* new_mac);
26 void (*bind_nic)(struct netdev* dev, struct ioforge_nic_service* nic);
27 void (*unbind_nic)(struct netdev* dev);
28};
29
45
49#endif // __NET__NETDEV_H__
kstring name
Definition dentry.h:5
#define NIC_MAC_LEN
Definition ioforge_nic.h:8
struct netdev netdev_t
Definition netdev.h:19
int create_netdev(char *name, netdev_type_t type)
Definition netdev.c:30
uint16_t get_next_ip_id(netdev_t *dev)
Definition netdev.c:100
netdev_t * lookup_netdev(char *name)
Definition netdev.c:70
netdev_type_t
Definition netdev.h:11
@ NETDEV_TYPE_TUN
Definition netdev.h:15
@ NETDEV_TYPE_ETHERNET
Definition netdev.h:12
@ NETDEV_TYPE_BRIDGE
Definition netdev.h:14
@ NETDEV_TYPE_TAP
Definition netdev.h:16
@ NETDEV_TYPE_LOOPBACK
Definition netdev.h:13
#define NETDEV_NAME_MAX_LEN
Definition netdev.h:6
size_t len
Definition oct2bin.h:7
int(* set_mac)(struct netdev *dev, const uint8_t *new_mac)
Definition netdev.h:25
int(* open)(struct netdev *dev)
Definition netdev.h:22
int(* transmit)(struct netdev *dev, uint8_t *packet, uint16_t len)
Definition netdev.h:24
void(* unbind_nic)(struct netdev *dev)
Definition netdev.h:27
int(* stop)(struct netdev *dev)
Definition netdev.h:23
void(* bind_nic)(struct netdev *dev, struct ioforge_nic_service *nic)
Definition netdev.h:26
int(* init)(struct netdev *dev)
Definition netdev.h:21
uint8_t mac[6]
Definition netdev.h:35
uint16_t mtu
Definition netdev.h:36
boolean_t is_up
Definition netdev.h:32
netdev_type_t type
Definition netdev.h:33
struct ioforge_nic_service * nic
Definition netdev.h:38
uint16_t ip_id_counter
Definition netdev.h:41
uint64_t hash
Definition netdev.h:31
struct netdev_ops * ops
Definition netdev.h:39
void * next
Definition netdev.h:43
char name[64]
Definition netdev.h:34
unsigned short uint16_t
Definition type.h:13
uint8_t boolean_t
Definition type.h:89
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7
uint8_t type
Definition vnode.h:2