network1
This commit is contained in:
parent
df34cecb16
commit
69b2dc41d7
5 changed files with 84 additions and 6 deletions
|
|
@ -1,6 +0,0 @@
|
|||
export ukl-obj-m := fs1.o
|
||||
|
||||
all:
|
||||
$(MAKE) -C ../whiterose/ UKL=$(PWD) bzImage
|
||||
qemu:
|
||||
qemu-system-x86_64 -enable-kvm -m 1G -s -kernel ../whiterose/arch/x86/boot/bzImage -append "console=ttyS0 ukl quiet" -nographic
|
||||
9
unikernel-demo/fs1/Makefile
Normal file
9
unikernel-demo/fs1/Makefile
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
export ukl-obj-m := main.o
|
||||
|
||||
all:
|
||||
$(MAKE) -C ../../whiterose/ UKL=$(PWD) bzImage
|
||||
|
||||
qemu:
|
||||
qemu-system-x86_64 -enable-kvm -s -m 1G -nographic -cpu host\
|
||||
-kernel ../whiterose/arch/x86/boot/bzImage\
|
||||
-append "console=ttyS0 ukl quiet"\
|
||||
26
unikernel-demo/network1/Makefile
Normal file
26
unikernel-demo/network1/Makefile
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
PACKAGES = bash coreutils iputils net-tools strace util-linux iproute pciutils
|
||||
TARGET = min-initrd.d
|
||||
SMD = supermin.d
|
||||
bzImage = ../../whiterose/x86/boot/bzImage
|
||||
|
||||
export ukl-obj-m := main.o
|
||||
|
||||
all: $(target)/root
|
||||
$(MAKE) -C ../../whiterose/ UKL=$(PWD) bzImage
|
||||
|
||||
supermin.d/packages:
|
||||
supermin --prepare $(PACKAGES) -o $(SMD)
|
||||
|
||||
supermin.d/init.tar.gz: init
|
||||
tar zcf $@ $^
|
||||
|
||||
$(TARGET)/root: supermin.d/packages supermin.d/init.tar.gz
|
||||
supermin --build -v -v -v --size 8G --if-newer --format ext2 supermin.d -o ${@D}
|
||||
|
||||
qemu:
|
||||
qemu-system-x86_64 -enable-kvm -s -m 1G -nographic -cpu host\
|
||||
-kernel $(bzImage)\
|
||||
-initrd min-initrd.d/initrd\
|
||||
-hda min-initrd.d/root\
|
||||
-append "console=ttyS0 ukl quiet"\
|
||||
--device virtio-net,netdev=usernet -netdev user,id=usernet,hostfwd=tcp::5555-:5555
|
||||
49
unikernel-demo/network1/main.c
Normal file
49
unikernel-demo/network1/main.c
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
// https://github.com/mafintosh/echo-servers.c/blob/master/tcp-echo-server.c
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <unistd.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#define BUFFER_SIZE 1024
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
int port = 5555;
|
||||
|
||||
int server_fd, client_fd, err;
|
||||
struct sockaddr_in server, client;
|
||||
char buf[BUFFER_SIZE];
|
||||
|
||||
server_fd = socket(AF_INET, SOCK_STREAM, 0); // ukl_socket
|
||||
|
||||
server.sin_family = AF_INET;
|
||||
server.sin_port = __builtin_bswap16 (port);
|
||||
server.sin_addr.s_addr = (uint32_t) 0x00000000;
|
||||
|
||||
int opt_val = 1;
|
||||
setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt_val, sizeof opt_val); // ukl_
|
||||
|
||||
err = bind(server_fd, (struct sockaddr *) &server, sizeof(server));
|
||||
|
||||
err = listen(server_fd, 128);
|
||||
|
||||
while (1) {
|
||||
socklen_t client_len = sizeof(client);
|
||||
client_fd = accept(server_fd, (struct sockaddr *) &client, &client_len); // ukl_accept
|
||||
|
||||
while (1) {
|
||||
int read = recv(client_fd, buf, BUFFER_SIZE, 0); // (recvfrom, fd, buf, len, flags, NULL, NULL);
|
||||
|
||||
if (!read) break;
|
||||
|
||||
err = send(client_fd, buf, read, 0); // (sendto, fd, buf, len, flags, NULL, 0);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in a new issue