1313// limitations under the License.
1414
1515'use strict' ;
16- var dhcpPacket = require ( './dhcp-packet' ) ;
17- var dhcpOptions = require ( './dhcp-options' ) ;
18- var runtime = require ( '../../core' ) ;
19- var IP4Address = runtime . net . IP4Address ;
20-
21- var STATE_IDLE = 0 ;
22- var STATE_DISCOVER_SENT = 1 ;
23- var STATE_REQUEST_SENT = 2 ;
24- var STATE_ACK_RECEIVED = 2 ;
25- var STATE_ERROR = 3 ;
26-
27- function sendPacket ( socket , srcMAC , type , serverIP , yourIP ) {
16+ const dhcpPacket = require ( './dhcp-packet' ) ;
17+ const dhcpOptions = require ( './dhcp-options' ) ;
18+ const runtime = require ( '../../core' ) ;
19+ const { IP4Address } = runtime . net ;
20+
21+ const STATE_IDLE = 0 ;
22+ const STATE_DISCOVER_SENT = 1 ;
23+ const STATE_REQUEST_SENT = 2 ;
24+ const STATE_ACK_RECEIVED = 2 ;
25+ // const STATE_ERROR = 3;
26+
27+ const sendPacket = ( socket , srcMAC , type , serverIP , yourIP ) => {
2828 // Request info option
29- var opt55 = { id : 55 , bytes : [
30- 1 , // subnet
31- 3 , // router
32- 6 // dns
33- ] } ;
29+ const opt55 = {
30+ id : 55 ,
31+ bytes : [
32+ 1 , // subnet
33+ 3 , // router
34+ 6 , // dns
35+ ] ,
36+ } ;
3437
35- var options ;
38+ let options ;
3639 if ( serverIP && yourIP ) {
37- var opt54 = { id : 54 , bytes : [ serverIP . a , serverIP . b , serverIP . c , serverIP . d ] } ;
38- var opt50 = { id : 50 , bytes : [ yourIP . a , yourIP . b , yourIP . c , yourIP . d ] } ;
40+ const opt54 = { id : 54 , bytes : [ serverIP . a , serverIP . b , serverIP . c , serverIP . d ] } ;
41+ const opt50 = { id : 50 , bytes : [ yourIP . a , yourIP . b , yourIP . c , yourIP . d ] } ;
3942 options = [ opt55 , opt54 , opt50 ] ;
4043 } else {
4144 options = [ opt55 ] ;
4245 }
4346
44- var u8 = dhcpPacket . create ( type , srcMAC , options ) ;
47+ const u8 = dhcpPacket . create ( type , srcMAC , options ) ;
4548 socket . send ( IP4Address . BROADCAST , 67 , u8 ) ;
46- }
49+ } ;
4750
48- function checkPacket ( u8 ) {
49- var op = dhcpPacket . getOperation ( u8 ) ;
50- if ( op !== dhcpPacket . OPERATION_RESPONSE ) {
51- return false ;
52- }
51+ const checkPacket = ( u8 ) => {
52+ const op = dhcpPacket . getOperation ( u8 ) ;
5353
54- if ( ! dhcpPacket . isValidMagicCookie ( u8 ) ) {
55- return false ;
56- }
54+ if ( op !== dhcpPacket . OPERATION_RESPONSE ) return false ;
55+ if ( ! dhcpPacket . isValidMagicCookie ( u8 ) ) return false ;
5756
5857 return true ;
59- }
58+ } ;
6059
61- function optionToIP ( options , id ) {
62- var option = dhcpOptions . find ( options , id , 4 ) ;
63- if ( ! option ) {
64- return IP4Address . ANY ;
65- }
60+ const optionToIP = ( options , id ) => {
61+ const option = dhcpOptions . find ( options , id , 4 ) ;
62+ if ( ! option ) return IP4Address . ANY ;
6663
6764 return new IP4Address ( option [ 0 ] , option [ 1 ] , option [ 2 ] , option [ 3 ] ) ;
68- }
65+ } ;
6966
70- function optionToIPsArray ( options , id ) {
71- var selected = dhcpOptions . findAll ( options , id , 4 ) ;
72- var result = [ ] ;
73- for ( var i = 0 , l = selected . length ; i < l ; ++ i ) {
74- result . push ( new IP4Address ( selected [ i ] [ 0 ] , selected [ i ] [ 1 ] , selected [ i ] [ 2 ] , selected [ i ] [ 3 ] ) ) ;
75- }
67+ const optionToIPsArray = ( options , id ) => {
68+ const selected = dhcpOptions . findAll ( options , id , 4 ) ;
69+ const result = [ ] ;
70+ for ( const sel of selected ) result . push ( new IP4Address ( sel [ 0 ] , sel [ 1 ] , sel [ 2 ] , sel [ 3 ] ) ) ;
7671
7772 return result ;
78- }
73+ } ;
7974
80- function dhcpConfigure ( intf , cb ) {
81- var macAddress = intf . getMACAddress ( ) ;
82- var socket = new runtime . net . UDPSocket ( ) ;
83- var clientState = STATE_IDLE ;
75+ const dhcpConfigure = ( intf , cb ) => {
76+ const macAddress = intf . getMACAddress ( ) ;
77+ const socket = new runtime . net . UDPSocket ( ) ;
78+ let clientState = STATE_IDLE ;
8479
85- function handleOffer ( serverIP , yourIP , options ) {
86- var serverId = optionToIP ( options , dhcpOptions . OPTION_SERVER_ID ) ;
87- if ( serverId . isAny ( ) ) {
88- serverId = serverIP ;
89- }
80+ const handleOffer = ( serverIP , yourIP , options ) => {
81+ let serverId = optionToIP ( options , dhcpOptions . OPTION_SERVER_ID ) ;
82+ if ( serverId . isAny ( ) ) serverId = serverIP ;
9083
9184 sendPacket ( socket , macAddress , dhcpPacket . packetType . REQUEST , serverId , yourIP ) ;
9285 clientState = STATE_REQUEST_SENT ;
93- }
86+ } ;
9487
95- function handleAck ( serverIP , yourIP , options ) {
88+ const handleAck = ( serverIP , yourIP , options ) => {
9689 clientState = STATE_ACK_RECEIVED ;
97- var subnetMask = optionToIP ( options , dhcpOptions . OPTION_SUBNET_MASK ) ;
98- var routerIPs = optionToIPsArray ( options , dhcpOptions . OPTION_ROUTER ) ;
99- var dnsIPs = optionToIPsArray ( options , dhcpOptions . OPTION_DOMAIN ) ;
10090
10191 return cb ( {
10292 ip : yourIP ,
103- mask : subnetMask ,
104- routers : routerIPs ,
105- dns : dnsIPs
93+ mask : optionToIP ( options , dhcpOptions . OPTION_SUBNET_MASK ) ,
94+ routers : optionToIPsArray ( options , dhcpOptions . OPTION_ROUTER ) ,
95+ dns : optionToIPsArray ( options , dhcpOptions . OPTION_DOMAIN ) ,
10696 } ) ;
107- }
97+ } ;
10898
109- function parseMessage ( serverIP , u8 ) {
110- if ( ! checkPacket ( u8 ) ) {
111- return ;
112- }
99+ const parseMessage = ( serverIP , u8 ) => {
100+ if ( ! checkPacket ( u8 ) ) return ;
113101
114- var options = dhcpPacket . getOptions ( u8 ) ;
115- var messageTypeOption = dhcpOptions . find ( options , dhcpOptions . OPTION_MESSAGE_TYPE , 1 ) ;
102+ const options = dhcpPacket . getOptions ( u8 ) ;
103+ const messageTypeOption = dhcpOptions . find ( options , dhcpOptions . OPTION_MESSAGE_TYPE , 1 ) ;
116104
117- if ( ! messageTypeOption ) {
118- return ;
119- }
105+ if ( ! messageTypeOption ) return ;
120106
121- var messageType = messageTypeOption [ 0 ] ;
122- var yourIP = dhcpPacket . getYourIP ( u8 ) ;
107+ const messageType = messageTypeOption [ 0 ] ;
108+ const yourIP = dhcpPacket . getYourIP ( u8 ) ;
123109
124110 // debug('GOT response', messageType, JSON.stringify(options));
125111
126- if ( clientState === STATE_DISCOVER_SENT &&
127- messageType === dhcpPacket . packetType . OFFER ) {
112+ if ( clientState === STATE_DISCOVER_SENT && messageType === dhcpPacket . packetType . OFFER ) {
128113 handleOffer ( serverIP , yourIP , options ) ;
129114 return ;
130115 }
@@ -133,31 +118,31 @@ function dhcpConfigure(intf, cb) {
133118 handleAck ( serverIP , yourIP , options ) ;
134119 return ;
135120 }
136- }
121+ } ;
137122
138- function err ( e ) {
123+ /* const err = (e) => {
139124 clientState = STATE_ERROR;
140125 debug(e.stack);
141- }
126+ }; */
142127
143- socket . onmessage = function ( ip , port , u8 ) {
128+ socket . onmessage = ( ip , port , u8 ) => {
144129 debug ( 'CLIENT OK' , ip , port , u8 ) ;
145130 parseMessage ( ip , u8 ) ;
146131 } ;
147132
148133 socket . bindToInterface ( intf , 68 ) ;
149134 sendPacket ( socket , macAddress , dhcpPacket . packetType . DISCOVER , null , null ) ;
150135 clientState = STATE_DISCOVER_SENT ;
151- }
136+ } ;
152137
153- runtime . net . onInterfaceAdded . add ( function ( intf ) {
138+ runtime . net . onInterfaceAdded . add ( ( intf ) => {
154139 debug ( 'intf add' ) ;
155140
156- dhcpConfigure ( intf , function ( config ) {
141+ dhcpConfigure ( intf , ( config ) => {
157142 debug ( 'configure dhcp ok' , JSON . stringify ( config ) ) ;
158143 intf . configure ( config . ip , config . mask ) ;
159144
160- var subnet = config . ip . and ( config . mask ) ;
145+ const subnet = config . ip . and ( config . mask ) ;
161146 runtime . net . route . addSubnet ( subnet , config . mask , null , intf ) ;
162147 runtime . net . route . addDefault ( config . routers [ 0 ] , intf ) ;
163148 intf . setNetworkEnabled ( true ) ;
0 commit comments