|
13 | 13 | // limitations under the License. |
14 | 14 |
|
15 | 15 | 'use strict'; |
16 | | -var assert = require('assert'); |
17 | | -var MACAddress = require('./mac-address'); |
18 | | -var IP4Address = require('./ip4-address'); |
19 | | -var arpTransmit = require('./arp-transmit'); |
20 | | -var arpHeader = require('./arp-header'); |
| 16 | +// const assert = require('assert'); |
| 17 | +const MACAddress = require('./mac-address'); |
| 18 | +const IP4Address = require('./ip4-address'); |
| 19 | +const arpTransmit = require('./arp-transmit'); |
| 20 | +const arpHeader = require('./arp-header'); |
21 | 21 |
|
22 | | -function ARPResolver(intf) { |
23 | | - this.intf = intf; |
24 | | - this.table = new Map(); |
25 | | -} |
26 | | - |
27 | | -ARPResolver.prototype.receive = function(u8, headerOffset) { |
28 | | - var operation = arpHeader.getOperation(u8, headerOffset); |
29 | | - var srcMAC = arpHeader.getSrcMAC(u8, headerOffset); |
30 | | - var srcIP = arpHeader.getSrcIP(u8, headerOffset); |
31 | | - var targetMAC = arpHeader.getTargetMAC(u8, headerOffset); |
32 | | - var targetIP = arpHeader.getTargetIP(u8, headerOffset); |
33 | | - var selfIP = this.intf.ipAddr; |
| 22 | +class ARPResolver { |
| 23 | + constructor(intf) { |
| 24 | + this.intf = intf; |
| 25 | + this.table = new Map(); |
| 26 | + } |
| 27 | + receive(u8, headerOffset) { |
| 28 | + const operation = arpHeader.getOperation(u8, headerOffset); |
| 29 | + const srcMAC = arpHeader.getSrcMAC(u8, headerOffset); |
| 30 | + const srcIP = arpHeader.getSrcIP(u8, headerOffset); |
| 31 | + const targetMAC = arpHeader.getTargetMAC(u8, headerOffset); |
| 32 | + const targetIP = arpHeader.getTargetIP(u8, headerOffset); |
| 33 | + const selfIP = this.intf.ipAddr; |
34 | 34 |
|
35 | | - debug('recv ARP', operation, srcMAC, srcIP, targetMAC, targetIP, selfIP); |
| 35 | + debug('recv ARP', operation, srcMAC, srcIP, targetMAC, targetIP, selfIP); |
36 | 36 |
|
37 | | - switch (operation) { |
38 | | - case arpHeader.OPERATION_REQEUST: |
39 | | - // Somebody requested this machine IP |
40 | | - if (!selfIP.equals(IP4Address.ANY) && selfIP.equals(targetIP)) { |
41 | | - this.reply(srcMAC, targetIP); |
| 37 | + switch (operation) { |
| 38 | + case arpHeader.OPERATION_REQEUST: |
| 39 | + // Somebody requested this machine IP |
| 40 | + if (!selfIP.equals(IP4Address.ANY) && selfIP.equals(targetIP)) this.reply(srcMAC, targetIP); |
| 41 | + break; |
| 42 | + case arpHeader.OPERATION_REPLY: |
| 43 | + this.table.set(srcIP.hash(), srcMAC); |
| 44 | + break; |
| 45 | + default: |
| 46 | + break; |
42 | 47 | } |
43 | | - break; |
44 | | - case arpHeader.OPERATION_REPLY: |
45 | | - var key = srcIP.hash(); |
46 | | - this.table.set(key, srcMAC); |
47 | | - break; |
48 | 48 | } |
49 | | -}; |
50 | | - |
51 | | -ARPResolver.prototype.request = function(targetIP) { |
52 | | - arpTransmit(this.intf, arpHeader.OPERATION_REQEUST, |
53 | | - this.intf.macAddr, this.intf.ipAddr, |
54 | | - MACAddress.ZERO, targetIP); |
55 | | -}; |
56 | | - |
57 | | -ARPResolver.prototype.reply = function(targetMAC, targetIP) { |
58 | | - arpTransmit(this.intf, arpHeader.OPERATION_REPLY, |
59 | | - this.intf.macAddr, this.intf.ipAddr, |
60 | | - targetMAC, targetIP); |
61 | | -}; |
62 | | - |
63 | | -ARPResolver.prototype.get = function(ip) { |
64 | | - return this.table.get(ip.hash()) || null; |
65 | | -}; |
| 49 | + request(targetIP) { |
| 50 | + arpTransmit(this.intf, arpHeader.OPERATION_REQEUST, |
| 51 | + this.intf.macAddr, this.intf.ipAddr, |
| 52 | + MACAddress.ZERO, targetIP); |
| 53 | + } |
| 54 | + reply(targetMAC, targetIP) { |
| 55 | + arpTransmit(this.intf, arpHeader.OPERATION_REPLY, |
| 56 | + this.intf.macAddr, this.intf.ipAddr, |
| 57 | + targetMAC, targetIP); |
| 58 | + } |
| 59 | + get(ip) { |
| 60 | + return this.table.get(ip.hash()) || null; |
| 61 | + } |
| 62 | +} |
66 | 63 |
|
67 | 64 | module.exports = ARPResolver; |
0 commit comments