2019-08-20 13:31:35 +00:00
'use strict' ;
'require rpc' ;
'require form' ;
'require network' ;
2019-09-09 09:09:18 +00:00
var callFileRead = rpc . declare ( {
object : 'file' ,
method : 'read' ,
params : [ 'path' ] ,
expect : { data : '' } ,
filter : function ( value ) { return value . trim ( ) }
2019-08-20 13:31:35 +00:00
} ) ;
return network . registerProtocol ( 'dhcp' , {
getI18n : function ( ) {
return _ ( 'DHCP client' ) ;
} ,
renderFormOptions : function ( s ) {
var dev = this . getL2Device ( ) || this . getDevice ( ) , o ;
o = s . taboption ( 'general' , form . Value , 'hostname' , _ ( 'Hostname to send when requesting DHCP' ) ) ;
2020-09-16 08:23:35 +00:00
o . datatype = 'or(hostname, "*")' ;
2019-08-20 13:31:35 +00:00
o . load = function ( section _id ) {
2019-09-09 09:09:18 +00:00
return callFileRead ( '/proc/sys/kernel/hostname' ) . then ( L . bind ( function ( hostname ) {
2019-08-20 13:31:35 +00:00
this . placeholder = hostname ;
return form . Value . prototype . load . apply ( this , [ section _id ] ) ;
} , this ) ) ;
} ;
o = s . taboption ( 'advanced' , form . Flag , 'broadcast' , _ ( 'Use broadcast flag' ) , _ ( 'Required for certain ISPs, e.g. Charter with DOCSIS 3' ) ) ;
o . default = o . disabled ;
o = s . taboption ( 'advanced' , form . Flag , 'defaultroute' , _ ( 'Use default gateway' ) , _ ( 'If unchecked, no default route is configured' ) ) ;
o . default = o . enabled ;
o = s . taboption ( 'advanced' , form . Flag , 'peerdns' , _ ( 'Use DNS servers advertised by peer' ) , _ ( 'If unchecked, the advertised DNS server addresses are ignored' ) ) ;
o . default = o . enabled ;
o = s . taboption ( 'advanced' , form . DynamicList , 'dns' , _ ( 'Use custom DNS servers' ) ) ;
o . depends ( 'peerdns' , '0' ) ;
o . datatype = 'ipaddr' ;
o . cast = 'string' ;
o = s . taboption ( 'advanced' , form . Value , 'metric' , _ ( 'Use gateway metric' ) ) ;
o . placeholder = '0' ;
o . datatype = 'uinteger' ;
o = s . taboption ( 'advanced' , form . Value , 'clientid' , _ ( 'Client ID to send when requesting DHCP' ) ) ;
o . datatype = 'hexstring' ;
s . taboption ( 'advanced' , form . Value , 'vendorid' , _ ( 'Vendor Class to send when requesting DHCP' ) ) ;
o = s . taboption ( 'advanced' , form . Value , 'macaddr' , _ ( 'Override MAC address' ) ) ;
o . datatype = 'macaddr' ;
o . placeholder = dev ? ( dev . getMAC ( ) || '' ) : '' ;
o = s . taboption ( 'advanced' , form . Value , 'mtu' , _ ( 'Override MTU' ) ) ;
o . placeholder = dev ? ( dev . getMTU ( ) || '1500' ) : '1500' ;
o . datatype = 'max(9200)' ;
}
} ) ;