20200114_jeffrey - silenceuncrio/diary GitHub Wiki
review
昨天發現的問題已經修復
是採行以下的解法
自己利用 libpcap 收 gre keepalive request 然後給出回應
m330[release/v0.08] - handle keepalive request by ourself when gre interface down
commit e5a36932683afc10c3731c282d464072ae9c9b89
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date: Tue Jan 14 11:18:07 2020 +0800
handle keepalive request by ourself when gre interface down
linux kernel with accept_local(1) will response the keepalive request when gre interface up
but when gre interface down, linux kernel will not response the keepalive request
we need handle this by ourself
proscend/prosrc/icos/greK/main.c | 105 ++++++++++++++++++++++++++++++---------
1 file changed, 81 insertions(+), 24 deletions(-)
看怎麼來幫忙 john 和 jessy 進行整合測試
build 一版最新的 m330[release/v0.08]
- Vendor/Products = CTCU/0_CTCU
目前搭配以下的測試環境
+-------+ +-------+
| | wan ethernet (eth1) | |
| m330 +-----------------------------------------------+ m330 |
| | 192.168.0.178 192.168.0.179 | |
+-------+ +-------+
注意到需額外設定 m330 的 WAN > Ethernet
已進行自己的 gre 測試
up down 的狀態都切換正常
先問一下 john ECMP 要怎麼測試
在配置 ECMP 的過程發現可以設定的 interface 少了 gre1 和 gre2
不過發現 gre 配置在 wan ethernet 上時
一開機並無法把 grek 叫起來
應該是當下 eth1 還沒存在的關係
m330[release/v0.08] - apply gre while receive event ICOS_WAN_GATEWAY_UPDATE
commit d527ba6a25831826abfb5fb46adf7db0f6dd4e2c
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date: Tue Jan 14 14:38:03 2020 +0800
apply gre while receive event ICOS_WAN_GATEWAY_UPDATE
proscend/prosrc/icos/icoslib/gre_3g/gre_3g.c | 122 ++++++++++++++++++++++++---
1 file changed, 110 insertions(+), 12 deletions(-)
整合測試的過程有發現一些 ecmp 的問題
目前 john 正修正中
跟 john 的 ECMP 整合測試算 PASS 了
改一下 profile - m330[release/v0.08] - 找一個 PROSRC_WIFI_STA 有 turn on 的 profile
- Vendor/Products = GENERIC/1_GENERIC_WIFI
當 WAN priority 為 Auto 時
Status 頁面會顯示 WAN DNS
當 WAN priority 為 LTE Only 且 LTE Net Mode 為 Router Only 時
Status 頁面會顯示 WAN DNS
當 WAN priority 為 LTE Only 且 LTE Net Mode 為 Bridge Only 時
Status 頁面會顯示 WAN DNS
當 WAN priority 為 ETH Only 時
Status 頁面沒有顯示 WAN DNS - 這是個 bug
當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Bridge Only 時
Status 頁面沒有顯示 WAN DNS - 這是個 bug
當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Router Only 時
Status 頁面沒有顯示 WAN DNS - 這是個 bug
總結一下有多少 bug
- 當 WAN priority 為 ETH Only 時 Status 頁面沒有顯示 WAN DNS
- 當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Bridge Only Status 頁面沒有顯示 WAN DNS
- 當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Router Only Status 頁面沒有顯示 WAN DNS
看一下目前 status.html.src
的相關部分
<!-- Display APN1 DNS information when WAN Priority = Auto(0) -->
<div class="panel panel-primary" ng-show="vm.status.wan_conn_type == 0">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_WAN_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
<!-- Display both APN DNS information when WAN Priority = LTE Only(1) and LTE Net Mode = 'Bridge + Router' (0) -->
<div class="row" ng-show="vm.status.wan_conn_type == 1 && vm.status.lte_net_mode == 0">
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_WAN_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_APN2_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip1.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip1.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip1.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Display APN1 DNS information when WAN Priority = LTE Only(1) and LTE Net Mode = 'Bridge ' (1) -->
<div class="panel panel-primary" ng-show="vm.status.wan_conn_type == 1 && vm.status.lte_net_mode == 1">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_WAN_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
<!-- Display APN1 DNS information when WAN Priority = LTE Only(1) and LTE Net Mode = 'Router ' (2) -->
<div class="panel panel-primary" ng-show="vm.status.wan_conn_type == 1 && vm.status.lte_net_mode == 2">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_WAN_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
<!-- Display both APN DNS information when WAN Priority = LTE Only(1) and LTE Net Mode = 'Dual Router' (3) -->
<div class="row" ng-show="vm.status.wan_conn_type == 1 && vm.status.lte_net_mode == 3">
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_WAN_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip0.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip0.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip0.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h4 class="panel-title">{{ 'STATUS_PANEL_TITLE_APN2_DNS' | translate }}</h4>
</div>
<div class="panel-body">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>{{ 'STATUS_ATTR' | translate }}</th>
<th>{{ 'STATUS_VALUE' | translate }}</th>
</tr>
</thead>
<tbody>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV4_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip1.ipinfo.ipDns[2] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #1</td><td>{{ vm.status.lte_dpip1.ip6info.dns[0] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #2</td><td>{{ vm.status.lte_dpip1.ip6info.dns[1] }}</td></tr>
<tr><td>{{ 'WANDNS_IPV6_DNS_SERVER' | translate }} #3</td><td>{{ vm.status.lte_dpip1.ip6info.dns[2] }}</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
想要能一眼看到邏輯應該利用 ng-include
再把呈現的部分封裝成 html 被 ng-include 使用
這樣就能方便的在 status.html 看到如衡呈現的邏輯
而不是一長串的 html 碼 -呈現的邏輯夾雜在 ng-show 裡面
就從 Status 頁面的 WAN DNS 部分試著來重構 Status 頁面吧