Skip to content

Commit c92a64f

Browse files
committed
dhcp interface <if> expire のデフォルト値を書き出す。
seil3 のデフォルト値は 24、seil6/8 のデフォルト値は 12 と異なるため、 expire が指定されていなかった場合には "24" を書く必要がある。
1 parent 29d6dd3 commit c92a64f

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

seil2recipe.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,13 @@ class TreeConfig {
711711
}
712712
}
713713

714+
set_default(labels, val, conv) {
715+
if (this.get(labels)) {
716+
return;
717+
}
718+
this.set(labels, val, conv);
719+
}
720+
714721
set_params(labels, params, conv) {
715722
const name = params['*NAME*'];
716723
for (const key in params) {
@@ -728,9 +735,17 @@ class TreeConfig {
728735
}
729736

730737
expand() {
738+
this.expand_dhcp();
731739
this.expand_floatlink();
732740
}
733741

742+
expand_dhcp() {
743+
for (const [ifname, cval] of this.match(['dhcp', 'interface', '*', 'expire'])) {
744+
const k = dhcp_get_interface(cval.conv, ifname);
745+
cval.conv.add(`${k}.expire`, cval.str);
746+
}
747+
}
748+
734749
expand_floatlink() {
735750
const ns = this.get(['floatlink', 'name-service']);
736751
if (ns == null) {
@@ -1470,13 +1485,14 @@ Converter.rules['dhcp'] = {
14701485
const idx = conv.if2index('dhcp.interface', ifname);
14711486
conv.set_memo(`dhcp.interface.${idx}`, true);
14721487
conv.add(`dhcp.${mode}.${idx}.interface`, ifname);
1488+
if (mode == 'server') {
1489+
conv.tconf.set_default(['dhcp', 'interface', tokens[2], 'expire'], "24", conv);
1490+
}
14731491
},
14741492

14751493
'expire': (conv, tokens) => {
14761494
const k = dhcp_get_interface(conv, tokens[2]);
1477-
if (k) {
1478-
conv.add(`${k}.expire`, tokens[4]);
1479-
}
1495+
conv.tconf.set(['dhcp', 'interface', tokens[2], 'expire'], tokens[4], conv);
14801496
},
14811497

14821498
'gateway': (conv, tokens) => {

test/test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,16 +450,36 @@ describe('dhcp', () => {
450450
dhcp enable
451451
dhcp mode server
452452
dhcp interface lan0 enable
453+
dhcp interface lan0 expire 24
453454
dhcp interface lan0 pool 192.168.0.10 30
454455
---
455456
interface.ge1.ipv4.address: 192.168.0.254/24
456457
dhcp.server.service: enable
458+
dhcp.server.100.expire: 24
459+
dhcp.server.100.interface: ge1
457460
dhcp.server.100.pool.address: 192.168.0.10/24
458461
dhcp.server.100.pool.count: 30
462+
`);
463+
});
464+
465+
it('expire default value has been changed (24 -> 12)', () => {
466+
assertconv(`
467+
interface lan0 add 192.168.0.1/24
468+
dhcp enable
469+
dhcp mode server
470+
dhcp interface lan0 enable
471+
dhcp interface lan0 pool 192.168.0.2 253
472+
---
473+
interface.ge1.ipv4.address: 192.168.0.1/24
474+
dhcp.server.service: enable
459475
dhcp.server.100.interface: ge1
476+
dhcp.server.100.expire: 24
477+
dhcp.server.100.pool.address: 192.168.0.2/24
478+
dhcp.server.100.pool.count: 253
460479
`);
461480
});
462481

482+
463483
it('relay enable/disable', () => {
464484
assertconv(`
465485
dhcp enable

0 commit comments

Comments
 (0)