umka/vnet.c
Ivan Baravy ae9c2198b6 Make umka_os use scheduler from KolibriOS kernel!
Also,
* Add more syscall wrappers;
* Replace puts(usage) with fputs(usage, fout);
* Remove some dead code.
2020-10-10 02:30:52 +03:00

57 lines
1.1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <inttypes.h>
#include <errno.h>
#include "umka.h"
#include "trace.h"
int tapfd;
typedef struct {
int fd;
} vnet_t;
void *vnet_init(int fd) {
printf("vnet_init\n");
vnet_t *vnet = (vnet_t*)malloc(sizeof(vnet_t));
*vnet = (vnet_t){.fd = fd,};
tapfd = fd;
return vnet;
}
__attribute__((__stdcall__))
void vnet_unload() {
printf("vnet_unload\n");
COVERAGE_OFF();
COVERAGE_ON();
}
__attribute__((__stdcall__))
void vnet_reset() {
printf("vnet_reset\n");
COVERAGE_OFF();
COVERAGE_ON();
}
static void dump_net_buff(net_buff_t *buf) {
for (size_t i = 0; i < buf->length; i++) {
printf("%2.2x ", buf->data[i]);
}
putchar('\n');
}
__attribute__((__stdcall__))
int vnet_transmit(net_buff_t *buf) {
printf("vnet_transmit: %d bytes\n", buf->length);
dump_net_buff(buf);
write(tapfd, buf->data, buf->length);
buf->length = 0;
COVERAGE_OFF();
COVERAGE_ON();
printf("vnet_transmit: done\n");
return 0;
}