NodeJS implementation of DHCP socket connection
npm install @network-utils/dhcp
Module has got TypeScript declarations. It can be helpful to understand the module API
"use strict";
let { BOOTMessageType, Server } = require("@network-utils/dhcp");
let s = new Server("192.168.1.1");
s.on("listening", () => {
console.log("Server start", s.address);
});
s.on("dhcp", e => {
console.log(e.packet.toString());
});
s.bind();
"use strict";
let { BOOTMessageType, Server } = require("@network-utils/dhcp");
let s = new Server({
serverId: "192.168.1.1",
gateways: ["192.168.1.1"],
domainServer: ["192.168.1.1"],
});
s.on("listening", () => {
console.log("Server start", s.address);
});
let ips = {};
s.on("discover", e => {
console.log("DISCOVER");
let pkt = e.packet;
// Get IP by MAC
let ip = "0.0.0.0";
if (pkt.op === BOOTMessageType.request) {
if (!(pkt.chaddr in ips))
ip = ips[pkt.chaddr] = `192.168.1.${Object.keys(ips).length + 2}`;
else
ip = ips[pkt.chaddr];
}
let offer = s.createOffer(pkt);
offer.yiaddr = ip;
s.send(offer);
});
s.on("request", e => {
console.log("REQUEST");
let ack = s.createAck(e.packet);
ack.yiaddr = ips[e.packet.chaddr];
s.send(ack);
});
s.on("release", e => {
console.log("RELEASE");
delete ips[e.packet.chaddr];
});
s.bind();