From 1edb531e1af0e1ed8a709e09f59f47342c92eef9 Mon Sep 17 00:00:00 2001 From: Marc Date: Tue, 15 Feb 2022 12:31:06 +0100 Subject: [PATCH] support de l'alumage des interface reseau --- clibs/chibrax/ip.cc | 43 +++++++++++++++++++++++++++ clibs/chibrax/nodeparams.hpp | 7 +++++ clibs/chibrax/socket.cc | 32 ++++++++++++++++++++ rootfs overrides/chibrax/index.js | 20 ------------- rootfs overrides/chibrax/ioctl.js | 6 ++++ rootfs overrides/chibrax/ip.js | 35 ++++++++++++++++++++++ rootfs overrides/chibrax/ip.node | Bin 0 -> 22184 bytes rootfs overrides/chibrax/socket.node | Bin 0 -> 17128 bytes rootfs overrides/chibrax/sockets.js | 28 +++++++++++++++++ rootfs overrides/etc/init.d/lo.js | 15 ++++++++++ startQemu.sh | 4 +-- 11 files changed, 167 insertions(+), 23 deletions(-) create mode 100644 clibs/chibrax/ip.cc create mode 100644 clibs/chibrax/nodeparams.hpp create mode 100644 clibs/chibrax/socket.cc create mode 100644 rootfs overrides/chibrax/ioctl.js create mode 100644 rootfs overrides/chibrax/ip.js create mode 100755 rootfs overrides/chibrax/ip.node create mode 100755 rootfs overrides/chibrax/socket.node create mode 100644 rootfs overrides/chibrax/sockets.js create mode 100644 rootfs overrides/etc/init.d/lo.js diff --git a/clibs/chibrax/ip.cc b/clibs/chibrax/ip.cc new file mode 100644 index 0000000..9ec0432 --- /dev/null +++ b/clibs/chibrax/ip.cc @@ -0,0 +1,43 @@ +#include "nodeparams.hpp" +#include +#include +#include +#include +#include +#include +#include + +const int inet_sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, 0); + +namespace ioctlNode { + int setflags(const char* iface, short flags) { + struct ifreq ifr; + + ifr.ifr_flags = flags; + strncpy(ifr.ifr_name, iface, IFNAMSIZ); + + return ioctl(inet_sock_fd, SIOCSIFFLAGS, &ifr); + } + + void nodeSetFlags(const nodeparam& args) { + v8::Isolate* isolate = args.GetIsolate(); + + if (args.Length() < 2 || !args[0]->IsString() || !args[1]->IsUint32()) { + isolate->ThrowException(v8::Exception::TypeError( + v8::String::NewFromUtf8(isolate, "Invalid arguments ip.srtFlags").ToLocalChecked())); + return; + } + + short flags = (short) argToInt(args[1]); + std::string path = argToString(args[0]); + + args.GetReturnValue().Set(setflags(path.c_str(), flags)); + } + + void Initialize(v8::Local exports) { + NODE_SET_METHOD(exports, "setFlags", nodeSetFlags); + } + + NODE_MODULE(ioctl_api, Initialize) +} + diff --git a/clibs/chibrax/nodeparams.hpp b/clibs/chibrax/nodeparams.hpp new file mode 100644 index 0000000..5acf06b --- /dev/null +++ b/clibs/chibrax/nodeparams.hpp @@ -0,0 +1,7 @@ +#include +#include + +#define nodeparam v8::FunctionCallbackInfo +#define argToInt(arg) arg.As()->Value() +#define argToString(arg) std::string(*v8::String::Utf8Value(isolate, arg)) + diff --git a/clibs/chibrax/socket.cc b/clibs/chibrax/socket.cc new file mode 100644 index 0000000..39ae133 --- /dev/null +++ b/clibs/chibrax/socket.cc @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include + +#define nodeparam v8::FunctionCallbackInfo + +namespace ioctlNode { + void nodeSocket(const nodeparam& args) { + v8::Isolate* isolate = args.GetIsolate(); + + if (args.Length() != 3 || !args[0]->IsUint32() || !args[1]->IsUint32() || !args[2]->IsUint32()) { + isolate->ThrowException(v8::Exception::TypeError( + v8::String::NewFromUtf8(isolate, "Argument 1, 2 & 3 must be numbers").ToLocalChecked())); + return; + } + + const int domain = args[0].As()->Value(); + const int type = args[1].As()->Value(); + const int protocol = args[2].As()->Value(); + + args.GetReturnValue().Set(socket(domain ,type, protocol)); + } + + + void Initialize(v8::Local exports) { + NODE_SET_METHOD(exports, "socket", nodeSocket); + } + + NODE_MODULE(ioctl_api, Initialize) +} diff --git a/rootfs overrides/chibrax/index.js b/rootfs overrides/chibrax/index.js index 26ff3fb..7df3e4a 100644 --- a/rootfs overrides/chibrax/index.js +++ b/rootfs overrides/chibrax/index.js @@ -12,26 +12,6 @@ async function main() { const { fHook } = require("./hook.js") console.clear() - console.log(` - _______ _________ ______ _______ _______ - ( ____ \\|\\ /|\\__ __/( ___ \\ ( ____ )( ___ )|\\ /| - | ( \\/| ) ( | ) ( | ( ) )| ( )|| ( ) |( \\ / ) - | | | (___) | | | | (__/ / | (____)|| (___) | \\ (_) / - | | | ___ | | | | __ ( | __)| ___ | ) _ ( - | | | ( ) | | | | ( \\ \\ | (\\ ( | ( ) | / ( ) \\ - | (____/\\| ) ( |___) (___| )___) )| ) \\ \\__| ) ( |( / \\ ) - (_______/|/ \\|\\_______/|/ \\___/ |/ \\__/|/ \\||/ \\| - - _______ _______ - ( ___ )( ____ \\ - | ( ) || ( \\/ - | | | || (_____ - | | | |(_____ ) - | | | | ) | - | (___) |/\\____) | - (_______)\\_______) - - `) await initd() diff --git a/rootfs overrides/chibrax/ioctl.js b/rootfs overrides/chibrax/ioctl.js new file mode 100644 index 0000000..c3fd2fb --- /dev/null +++ b/rootfs overrides/chibrax/ioctl.js @@ -0,0 +1,6 @@ +//@ts-check +//@ts-expect-error +const { ioctl } = require('./ioctl.node') + + +module.exports = { ioctl } \ No newline at end of file diff --git a/rootfs overrides/chibrax/ip.js b/rootfs overrides/chibrax/ip.js new file mode 100644 index 0000000..78ad4fd --- /dev/null +++ b/rootfs overrides/chibrax/ip.js @@ -0,0 +1,35 @@ +//@ts-check + +//@ts-expect-error +const ip = require('./ip.node') + +const flags = { + IFF_UP: 0x1, /* Interface is up. */ + IFF_BROADCAST: 0x2, /* Broadcast address valid. */ + IFF_DEBUG: 0x4, /* Turn on debugging. */ + IFF_LOOPBACK: 0x8, /* Is a loopback net. */ + IFF_POINTOPOINT: 0x10, /* Interface is point-to-point link. */ + IFF_NOTRAILERS: 0x20, /* Avoid use of trailers. */ + IFF_RUNNING: 0x40, /* Resources allocated. */ + IFF_NOARP: 0x80, /* No address resolution protocol. */ + IFF_PROMISC: 0x100, /* Receive all packets. */ + /* Not supported */ + IFF_ALLMULTI: 0x200, /* Receive all multicast packets. */ + IFF_MASTER: 0x400, /* Master of a load balancer. */ + IFF_SLAVE: 0x800, /* Slave of a load balancer. */ + IFF_MULTICAST: 0x1000, /* Supports multicast. */ + IFF_PORTSEL: 0x2000, /* Can set media type. */ + IFF_AUTOMEDIA: 0x4000, /* Auto media select active. */ + IFF_DYNAMIC: 0x8000 /* Dialup device with changing addresses. */ +} + +/** + * @param { string } interface + * @param { number } flags + * @return { number } + */ +function setFlags(interface, flags) { + return ip.setFlags(interface, flags) +} + +module.exports = { setFlags, flags } \ No newline at end of file diff --git a/rootfs overrides/chibrax/ip.node b/rootfs overrides/chibrax/ip.node new file mode 100755 index 0000000000000000000000000000000000000000..02da8a3baac156caef819326c973d137caa0f466 GIT binary patch literal 22184 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 literal 0 HcmV?d00001 diff --git a/rootfs overrides/chibrax/socket.node b/rootfs overrides/chibrax/socket.node new file mode 100755 index 0000000000000000000000000000000000000000..ca92f15ba61edc698a9a6df665f8c7579583ab8c GIT binary patch literal 17128 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 LU%9-nf?fY#Ca5J< literal 0 HcmV?d00001 diff --git a/rootfs overrides/chibrax/sockets.js b/rootfs overrides/chibrax/sockets.js new file mode 100644 index 0000000..ad89394 --- /dev/null +++ b/rootfs overrides/chibrax/sockets.js @@ -0,0 +1,28 @@ +//@ts-check +//@ts-expect-error +const csocket = require('./socket.node') + +/** + * @param { number } domain + * @param { number } type + * @param { number } protocol + * @return { number } + */ +function socket(domain, type, protocol) { + return csocket.socket(domain, type, protocol) +} + +const socketTypes = { + SOCK_DGRAM : 1, /* Connectionless, unreliable datagrams of fixed maximum length. */ + SOCK_STREAM : 2, /* Sequenced, reliable, connection-based byte streams. */ + SOCK_RAW : 3, /* Raw protocol interface. */ + SOCK_RDM : 4, /* Reliably-delivered messages. */ + SOCK_SEQPACKET : 5, /* Sequenced, reliable, connection-based, datagrams of fixed maximum length. */ + SOCK_DCCP : 6, /* Datagram Congestion Control Protocol. */ + SOCK_PACKET : 10, /* Linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level. */ + + SOCK_CLOEXEC : 0o2000000, /* Atomically set close-on-exec flag for the new descriptor(s). */ + SOCK_NONBLOCK : 0o0000200 /* Atomically mark descriptor(s) as non-blocking. */ +} + +module.exports = { socketTypes, socket } \ No newline at end of file diff --git a/rootfs overrides/etc/init.d/lo.js b/rootfs overrides/etc/init.d/lo.js new file mode 100644 index 0000000..09cb92e --- /dev/null +++ b/rootfs overrides/etc/init.d/lo.js @@ -0,0 +1,15 @@ +const ip = require('../../chibrax/ip') +//async is optional but recomended for optimisation (optimisations are yet to be implemented) +async function init() { + ip.setFlags('lo', ip.flags.IFF_UP | ip.flags.IFF_LOOPBACK | ip.flags.IFF_RUNNING) +} + +const after = ['filesystem.js'] // list of init script to load before +const before = [] + +module.exports = { + init, + after, + before +} + diff --git a/startQemu.sh b/startQemu.sh index a23e1eb..5a47c84 100755 --- a/startQemu.sh +++ b/startQemu.sh @@ -11,6 +11,4 @@ qemu-system-x86_64\ -k fr\ -vga qxl\ -audiodev pa,id=hda,out.mixing-engine=on \ - -device intel-hda -device hda-output,audiodev=hda \ - -netdev user,id=net0 \ - -device virtio-net-pci,netdev=net0 + -device intel-hda -device hda-output,audiodev=hda