diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 93a71b4c5..b55dec094 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -198,6 +198,7 @@ set(emulation_sources ioctl/ioctl.c ioctl/termios.c ioctl/filio.c + ioctl/socket.c ext/sysinfo.c ext/uname.c ext/epoll_create.c diff --git a/src/kernel/emulation/linux/ioctl/ioctl.c b/src/kernel/emulation/linux/ioctl/ioctl.c index 0f0e193ff..68cd6cd48 100644 --- a/src/kernel/emulation/linux/ioctl/ioctl.c +++ b/src/kernel/emulation/linux/ioctl/ioctl.c @@ -5,6 +5,8 @@ #include #include "termios.h" #include "filio.h" +#include "termios.h" +#include "socket.h" #define IOCTL_STEP(x) { int state, retval; state = (x); \ if (state == IOCTL_HANDLED) return retval; } @@ -13,6 +15,7 @@ long sys_ioctl(int fd, int cmd, void* arg) { IOCTL_STEP(handle_filio(fd, cmd, arg, &retval)); + IOCTL_STEP(handle_socket(fd, cmd, arg, &retval)); IOCTL_STEP(handle_termios(fd, cmd, arg, &retval)); run_ioctl: diff --git a/src/kernel/emulation/linux/ioctl/socket.c b/src/kernel/emulation/linux/ioctl/socket.c index 6e602c7ac..be7e443d2 100644 --- a/src/kernel/emulation/linux/ioctl/socket.c +++ b/src/kernel/emulation/linux/ioctl/socket.c @@ -1,9 +1,24 @@ #include "socket.h" #include +#include +#include +#include +#include +#include +#include int handle_socket(int fd, unsigned int cmd, void* arg, int* retval) { - // BEWARE: This function is not yet wired into the logic and the build + switch (cmd) + { + // TODO: This has to be implemented for container with separate networking + case SIOCGIFFLAGS: + case SIOCSIFFLAGS: + case SIOCAIFADDR: // set IPv4 address + case SIOCAIFADDR_IN6: // set IPv6 address + *retval = -ENOTSUP; + return IOCTL_HANDLED; + } return IOCTL_PASS; }