dhcp-mon
v1.0.7
Published
NodeJS implementation of DHCP socket connection
Downloads
7
Maintainers
Readme
DHCP-MON
DHCP-MON is a Node.js implementation of a DHCP socket connection. It provides a simple and efficient way to handle DHCP events in your network.
Installation
You can install DHCP-MON using npm:
npm install dhcp-mon
Usage
DHCP-MON comes with TypeScript declarations, which can help you understand the module API. See declarations
DHCP Monitor Example
import { BOOTMessageType, Server } from "dhcp-mon";
const 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();
DHCP Server Example
import { BOOTMessageType, Server } from "dhcp-mon";
const 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);
});
const ips = {};
s.on("discover", (e) => {
console.log("DISCOVER");
const 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];
}
}
const offer = s.createOffer(pkt);
offer.yiaddr = ip;
s.send(offer);
});
s.on("request", (e) => {
console.log("REQUEST");
const 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();
RFC
For more information about DHCP, you can refer to the following RFCs: