7i  org/freertr/serv/servGeneric()V   #org/freertr/serv/servDhcp4$dhcpModeserver%Lorg/freertr/serv/servDhcp4$dhcpMode;   org/freertr/serv/servDhcp4mode  bootServLjava/lang/String;  bootFile  domNam.  !"leaseI $ %"renew ' ("remember*org/freertr/tab/tabGen ) - ./optionsLorg/freertr/tab/tabGen;1java/util/ArrayList 0 4 56bindingsLjava/util/List; 8 9/ forbidden ; <6helperAddresses > ?"circuitIdTemplate A B"remoteIdTemplate D EFlinkSelectionAddrLorg/freertr/addr/addrIPv4; H I subscriberId K L" maxHopCount N O"agentRelayMode Q R6relayInterfaces T UVdefaultF[Lorg/freertr/user/userFilter; XYZ [\org/freertr/pipe/pipeSidesetTime(I)V^ org/freertr/serv/servDhcp4worker ]` aV(Lorg/freertr/serv/servDhcp4;Lorg/freertr/pipe/pipeSide;Lorg/freertr/prt/prtGenConn;)V cde f"org/freertr/prt/prtGenConntimeout Xh ijsetClose()Z lmn opjava/lang/StringvalueOf&(Ljava/lang/Object;)Ljava/lang/String;r stmakeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; vwx yzjava/util/Listadd(Ljava/lang/Object;)Z | }FpoolLo  FpoolHi s&(Ljava/lang/String;)Ljava/lang/String; sJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  Fgatewayr  Fnetmaskr  Fdns1r  Fdns2 l length()I r r r r s'(Ljava/lang/String;I)Ljava/lang/String; ) size ) get(I)Ljava/lang/Comparable;org/freertr/serv/servDhcp4bind macLorg/freertr/addr/addrMac;r v v (I)Ljava/lang/Object; confedZ Fipr  bindFile bind-file  org/freertr/util/cmdscfgLineJ(Ljava/util/List;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vrinterface-nameinterface-number s(I)Ljava/lang/String;rhostname ip-address mac-addressrr subscriber-idnothingreplaceappendforwarddiscardr  org/freertr/util/bitsgetTime()J c j setClosing  relayorg/freertr/pack/packDhcp4   parseHeader!(Lorg/freertr/pack/packHolder;Z)Z  org/freertr/util/debugger servDhcp4trafdhcp relay bad packet    org/freertr/util/loggerdebug(Ljava/lang/String;)V   " bootpHops s(II)Ljava/lang/String;  "bootpOp c peerAddrLorg/freertr/addr/addrIP;  F bootpGiaddr  !jorg/freertr/addr/addrIPv4isEmpty c# $%ifaceLorg/freertr/ip/ipFwdIface; '() *org/freertr/ip/ipFwdIfaceaddr ,-. /0org/freertr/addr/addrIPtoIPv4()Lorg/freertr/addr/addrIPv4; 2 34setAddr(Lorg/freertr/addr/addrType;)V7,dhcp4 relay nothing agent relay mode options9,dhcp4 relay replacing existing agent options ; <= dhcpAgentInfo[B?/dhcp4 relay appending to existing agent optionsA7dhcp4 relay forwarding existing agent options unchangedC9dhcp4 relay discarding packet with existing agent optionsF+dhcp4 relay adding agent information option HIJ oKjava/lang/Byte(B)Ljava/lang/Byte; lN OPgetBytes()[B 'R S"ifwNum ! WXY Zorg/freertr/cfg/cfgAllhostName!" N H_ `a byteValue()B# def gorg/freertr/pack/packHolderclear i jk createHeader8(Lorg/freertr/pack/packHolder;Lorg/freertr/tab/tabGen;)V dm n merge2beg p qrsrvVrfLorg/freertr/cfg/cfgVrf; tuv wxorg/freertr/cfg/cfgVrfgetUdp3(Lorg/freertr/addr/addrIP;)Lorg/freertr/prt/prtUdp;z dhcp-relay |}~ org/freertr/prt/prtUdp packetConnect(Lorg/freertr/prt/prtServP;Lorg/freertr/ip/ipFwdIface;ILorg/freertr/addr/addrIP;ILjava/lang/String;ILjava/lang/String;II)Lorg/freertr/prt/prtGenConn; d  copyBytes!(ZZ)Lorg/freertr/pack/packHolder; c send2net (Lorg/freertr/pack/packHolder;)Z c "portRem$%+dhcp relay reply has empty giaddr, ignoring , ,  fromIPv4addr(Lorg/freertr/addr/addrIPv4;)V ,  compareTo(Lorg/freertr/addr/addrType;)I&dhcp-relay-hop+dhcp4 relay final hop: forwarding to client  \ fillBytes  F bootpCiaddr  0 getBroadcast'java/lang/Exception   traceback(Ljava/lang/Throwable;)V  word()Ljava/lang/String; l zequals  invalid mode   errorhelper-addresses ve ,  fromString(Ljava/lang/String;)Zbad helper addresscircuit-id-templateremote-id-templatelink-selection-address   bad address   getRemaining max-hop-count  str2num(Ljava/lang/String;)Iagent-relay-mode  txt2buf$(Ljava/lang/String;)Ljava/util/List; b  '(Ljava/lang/String;Ljava/lang/String;)V  (Lorg/freertr/util/cmds;)Z   findBindingX(Lorg/freertr/addr/addrMac;ILorg/freertr/addr/addrIPv4;)Lorg/freertr/serv/servDhcp4bind;  reqdJpool  bad order  FpoolMsk  FpoolNet  setSub9(Lorg/freertr/addr/addrType;Lorg/freertr/addr/addrType;)V  4setNot   toNetmask  \ fromNetmask   setAnd dns-server boot-server boot-file domain-name!%(9org/freertr/addr/addrMac   ) y.(Ljava/lang/Comparable;)Ljava/lang/Comparable;!static # $()Lorg/freertr/addr/addrMac; & 0(option*org/freertr/pack/packDhcpOption ) )- .(Lorg/freertr/util/cmds;)V )0 1put3no )5 6del8operation mode :;< y=org/freertr/user/userHelp;(Ljava/util/List;ZI[ILjava/lang/String;Ljava/lang/String;)V?dhcp server modeAdhcp relay modeC#dhcp server addresses to forward toEGserver ip addressI%circuit id template for agent optionsK use interface name as circuit idM"use interface number as circuit idO$remote id template for agent optionsQuse hostname as remote idSuse ip address as remote idUuse mac address as remote idW)specify link selection sub-option addressY ipv4 address[specify subscriber id string]_ subscriber idaspecify maximum hop countcehop count (1-255)gspecify agent relay modeido nothing with the optionk append to existing agent optionsmreplace existing agent optionso(forward existing agent options unchangedq+discard packets with existing agent optionss save bindingsu file namewaddress pool to useyfirst address to delegate{last address to delegate}gateway address to delegateaddress of gateway)address(es) of name server(s) to delegatedns#1 server addressdns#2 server address"address of tftp server to delegatedns server addresspath of tftp file to delegatedomain name to delegate domain namelease time to delegatelease time in msrenew time to delegaterenew time in msremember time on releaseremember time in msnetwork to delegatenetmask to delegatemac address of clientip address of clientspecify custom optiontype of option data bytedhcp4  srvIfaceLorg/freertr/cfg/cfgIfc;   restartTimer(Z)Vorg/freertr/pipe/pipeLine  (IZ)V   genStrmStart9(Lorg/freertr/prt/prtServS;Lorg/freertr/pipe/pipeLine;I)Z v+dhcp4 relay: no upstream servers configured ODHCP4 Relay: Waiting for interface configuration - no interfaces configured yet(   infoorg/freertr/cfg/cfgIfc  name) t udp4Lorg/freertr/prt/prtUdp;  %fwdIf4  srvPort  srvName |  packetListenz(Lorg/freertr/prt/prtServP;Lorg/freertr/ip/ipFwdIface;ILorg/freertr/addr/addrIP;ILjava/lang/String;ILjava/lang/String;II)Z* s((ZLjava/lang/String;I)Ljava/lang/String;FAILEDSUCCESS+   genericStop(I)Z, |  listenStop9(Lorg/freertr/ip/ipFwdIface;ILorg/freertr/addr/addrIP;I)Z   purgeTimerLjava/util/Timer;  java/util/Timercancel org/freertr/serv/servDhcp4timer  (Lorg/freertr/serv/servDhcp4;)V`  schedule(Ljava/util/TimerTask;JJ)V )  find   java/util/Collectionssort(Ljava/util/List;)V    binarySearch%(Ljava/util/List;Ljava/lang/Object;)I v remove org/freertr/serv/servDhcp4bindIp    )(Ljava/util/List;Ljava/util/Comparator;)V   !;(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I # $ fillRandom & 'setAdd)failed to bind new address + , warn . /"bootpXid 1 2" bootpSecs 4 5bootpBroadcast 7 8F bootpYiaddr : ; bootpChaddr = >Faddr4 @ AF bootpSiaddr C D bootpSname F G bootpSfile I JF dhcpServer L MF dhcpDns1srv O PF dhcpDns2srv R SF dhcpGateway U VF dhcpNetMask X Y" dhcpLeaseTime [ \" dhcpRenewTime ^ _dhcpDomainName a b"dhcpOp d ef updatePack[(Lorg/freertr/pack/packDhcp4;Lorg/freertr/pack/packDhcp4;Lorg/freertr/serv/servDhcp4bind;)V- i jkbuf2txt&(ZLjava/util/List;Ljava/lang/String;)Zmerror saving bindingsoorg/freertr/user/userFormatq|s mac|ip|last n v wxtimePast(J)Ljava/lang/String;. n{ y v} ~indexOf(Ljava/lang/Object;)I/  j srvDeinit  jsrvInit0   servDhcp6traf1 v z2org/freertr/user/userFilterserver dhcp4 .* port 67  7(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V   proto2string3 mode server boot-server  boot-file  lease 43200000 renew 21600000 remember 0 no bind-file# circuit-id-template interface-name remote-id-template hostname no link-selection-address no subscriber-id max-hop-count 10 agent-relay-mode nothingorg/freertr/prt/prtServSorg/freertr/prt/prtServP Signature;Lorg/freertr/tab/tabGen;2Ljava/util/List;:Lorg/freertr/tab/tabGen;+Ljava/util/List;*Ljava/util/List;CodeLineNumberTable srvDefFlt ()[Lorg/freertr/user/userFilter; srvAccept:(Lorg/freertr/pipe/pipeSide;Lorg/freertr/prt/prtGenConn;)Z StackMapTablesrvShRun&(Ljava/lang/String;Ljava/util/List;I)Vjava/lang/Objectjava/lang/Throwable:(Ljava/lang/String;Ljava/util/List;I)V datagramReady(Lorg/freertr/prt/prtGenConn;)VdatagramClosed datagramWork datagramErrorx(Lorg/freertr/prt/prtGenConn;Lorg/freertr/pack/packHolder;Lorg/freertr/addr/addrIP;Lorg/freertr/util/counter$reasons;I)Z datagramState>(Lorg/freertr/prt/prtGenConn;Lorg/freertr/util/state$states;)Z datagramRecv<(Lorg/freertr/prt/prtGenConn;Lorg/freertr/pack/packHolder;)Z= srvCfgStrsrvHelp(Lorg/freertr/user/userHelp;)VsrvProtogotPack:(Lorg/freertr/pack/packDhcp4;)Lorg/freertr/pack/packDhcp4; doPurginggetShow()Lorg/freertr/user/userFormat;addRelayInterface(Lorg/freertr/cfg/cfgIfc;)VremoveRelayInterface SourceFileservDhcp4.java NestMembersBootstrapMethodsmode no pool pool   no gateway gateway  no netmask netmask  no dns-server dns-serverboot-server  boot-file domain-name lease renew   remember   forbidden   static   option helper-addresses unknown=circuit-id-template remote-id-template link-selection-address max-hop-count agent-relay-mode $dhcp relay max hops exceeded:  >= !'dhcp relay client->server from  hops=#+dhcp4 relay max hop count exceeded ( >= )%dhcp4 relay set giaddr to '4dhcp4 relay unknown agent relay mode , using append) interface-+interface-iface--/mac-17dhcp4 relay agent information option added with  bytes3(dhcp4 relay processing reply from port 5"dhcp relay server->client giaddr=7.dhcp relay multi-hop: forwarding to relay at 9'dhcp relay unknown operation:  port: ;8DHCP4 Relay: Starting service on  configured interfaces=1DHCP4 Relay: Starting packetListen on interface ?9DHCP4 Relay: packetListen result= for interface  port A$DHCP4 Relay: Service start result: C/DHCP4 Relay: Starting packetStop on interface Edelete G||I-dhcp4 relay interface  already in relay listK@dhcp4 relay added interface  to relay list. total interfaces: M.dhcp6 relay: interface  was not in relay listOEdhcp6 relay: removed interface  from relay list. total interfaces: Q protocol S TUV sW$java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; InnerClassesdhcpMode[ org/freertr/util/counter$reasons]org/freertr/util/counterreasons`org/freertr/util/state$statesborg/freertr/util/statestatese%java/lang/invoke/MethodHandles$Lookupgjava/lang/invoke/MethodHandlesLookup! }FFFFFFFF!"%"("./569/<6?"B"EFIL"O"R6UV** ******l#*&*)Y+,*0Y23*)Y+7*0Y2:*=*@*C*G* J*M*0Y2PR+? mrw|#-2=HS^chmrx},Sy7* +'W]Y*+,_W,b++W+gW& %)05 ,+* kquW* ?*{ *~,+uW,+*{k*~kuW*,+uW,+*kuW*,+uW,+*kuW:**k:**k:,+uW,+uW,+*uW,+*uW,+*uW,+*uW,+*#uW,+*&uW6*7,*7:,+kuW*3Y:6*3I*3:+ ,+kkuWç :6*,",+*,kuW,*+*Ƨ:6*: *:k:,+uW*=' ::*=:,+uW*@1#*:::*@:,+uW*C,+*CkuW,*G+*G,+*JuW*ME")07>:*:#:::*M:,+uW   RT,<W^n):K \ m |   !:@WZ!^"o#"%&(*+-.0346 79:<=?(B7C>DRFiGzHJKMNPQSTVWY\^0,lh4 % E*Kvlvlv l* . )Kvlvlv@ behko B+W* Y:,  *J *Jo/+k  *J *JY ` ++"&+1k56*M$3M_nr6i 8:6O >6=7@.:# B*MDl E0Y2::*6::3GuW*=B.+"kLM:%+"QTM:*=UM:GuWGuW6   3GuW *@P%<VM:<+"&k[M:%+"Q\M:*@UM:GuWGuW6   3GuW *CHGuW*C]:GuW6   3GuW *GIGuW*GM:GuW6   3GuW :6  : :  H^T : :b*:Y:6*:b*:,: ,c,h,l*o s*+"C Cy{:   ,W Wç :  +k ,Y:+"&Pk*os*+"CC{:,WW *M :,c,h,l,Y: *os*+"CDy{:   ,W W+: 56Z[./zst uvz{(|.}46BHY[|$*39?GJMSY\_envy%(6BQ\lr     #,;FV\cpy"#$#&'*+01 20344;5?6_7d8g:s;y1=>CDGHLMNPVWXZ[_(`-a/c6d<f?hEiKmRnXrateulvpyyz|D" "=*  v#   -.' T,cE7,&c 8,&c cd +M,9+M, * , * +,L*:+M,*,YN-, +Ķ*:-uW* ,ƶ)+M,Ͷ *=,϶*=,ȶ:+M,ն *@",׶ *@,ٶ*@,ʶ'*Y̵C*C+͙ +ζ,ݶ *+еG,Ӷ*+յJ,ٶP+M,*M,*M,*M,*M,*M,Ķ}*+е*N-76-RY:Y-l#*: ,*Y̵{*{+͙*{+ζ*Y̵~*~+͙*~+ζ*{*~*{*~+*Y̵*Y̵**~*{****d**{***, ,*Y̵*+͙*+ζ, ,*Y̵*+͙*+ζ, f+M*Y̵*,͙*+ζ*+M,*Y̵*,͙*+ζ, *+, *+, *+,*+յ,*+յ#,*+յ&,3YN-+Y:-*7W, [YNY:-++͙*-:-"%,')Y+N-+,*,-/W,2+M,Ķ *,*{*~**,  *,  *, **, *, *, *,**#h,**l#, *&,3YN-+Y:-*74W, "YN-+*-W,*:,ƶ *=,ȶ *@,ʶ *C,ݶ *G,Ӷ * J,ٶ *M,')Y+N-+,*,-4W(2<CEOX]ehpx ,357@HJT_akpy~$),39;EP^cjl w    % 3!8"?#A%C'M(X)f*k+r,t.v012345689:;=>?@ACEFGIJ K MNOQ)R4S6U@VKWMYWZb[d]n^v_`bcdeghijkmnpqrtuvwy z{| }",.3<ACMRW\acmrt~  +-6<FHRZegoq{ R(l,   + v30& [002#' !  !ai+ YO79+ YO>9+ YO@9+ YOB9+ YOYODF9+ YOH9+ YOJ9+ YOL9+ YON9+ YOP9+ YOR9+ YOT9+ YOV9+ YODX9+ YOZ9+ YO\^9+ YO`9+ YObd9+ YOf9+ YOh9+ YOj9+ YOl9+ YOn9+ YOp9+ YOr9+ YOYO\t9+ YOv9+ YODx9+ YODz9+ YO |9+ YOD~9+ YO 9+ YOYOD9+ YOD9+ YO9+ YO\9+ YO9+ YO\9+ YO9+ YO\9+ YO9+ YOb9+ YO9+ YOb9+ YO9+ YOb9+ YO 9+ YO9+ YO v9+ YOD9+ YOD9+ YOv9+ YOD9+ YO'9+ YOYOb9+ YOYOb99(<Ph|*>Rfz   , @ Th|  4H\p !"#$$%8&P'h(+C/!3j * #****Y*o*: *P ĸ*P<=*Pn*PN-S-̺*o*-**6-*׺< !7 89;<*?1@3D?EEFKHMLYM_NePgSmT~XYZ[\^_bcdfgYkln)!6Bl@jq* ***o<*PE*PM,*,̺*o,*W:r stwx{-|;}?~BHTi{o!8*M**YY*M*, *    )7J p Y:+"*7 *3Y:»Y:*3 +"*36_*3:4*&*3W*e*&aðð*ð*{ð*3Y-x*q*jY:Y:**-*7-%N-*3Y6*3uWð6@~Y:"**{%*{E*~6*3Y6*3uWð(*ð:  (UV9  (18ALQanqv|"'-?DPV`inyD P! 9  efo,,+--,+00,+33,+%,-%6,-"9,*<%?,*[B,*[E,+9"9,*<%H*,*%K*,*%N*,*%Q*,*%T,*lW,*#lZ,*[]b (3>LYfqR+YN+`}"Dm*+9+M,-`*+-,c-*+9+M,,-`*+-,c-*+9+MR 8FJLQXZhln!u"z#$&')S - #*3YL¸A*3d6^*3:@5 e*"kg*3W+ç :+**L+ 0Y2L+*30Y2L*3YM>*31*3:+k[uW,ç :,+*h lñz}}}"01 23-42557=8@:P;S=Y>f@r2xBCDFGHJKMNOPQRTOV WXZC  Dv#DXnYprtL=*3<*3N-!+-k-k-uyz+"bcd+e/f2hPcVjn!!Q*P+|+̺*W*P+uW*W+*PDZ* t uvx z%{0|5};~P/!Q*P+|+̺*W*P+W*W+*P*   %05;P/8YYSYY!SYYSYYSYYSYYSYYSYYSYYSY YSY YSY YSY YSY YSYYSS!:4RRRRRRRRRRRRRRRRR R RRRRRRRRRR R"R$R&R(R*R,R.R0R2R4R6R8R:R<R>R@RBRDRFRHRJRLRNRPX"Y@Z\^@_ac@dfh