20200114_jeffrey - silenceuncrio/diary GitHub Wiki

0905

review

1100

昨天發現的問題已經修復

是採行以下的解法

自己利用 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 進行整合測試

1130

build 一版最新的 m330[release/v0.08]

  • Vendor/Products = CTCU/0_CTCU

1325

目前搭配以下的測試環境

+-------+                                               +-------+
|       |              wan ethernet (eth1)              |       |
| m330  +-----------------------------------------------+ m330  |
|       | 192.168.0.178                   192.168.0.179 |       |
+-------+                                               +-------+

注意到需額外設定 m330 的 WAN > Ethernet

已進行自己的 gre 測試

up down 的狀態都切換正常

先問一下 john ECMP 要怎麼測試

1340

在配置 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(-)

1440

整合測試的過程有發現一些 ecmp 的問題

目前 john 正修正中

1515

跟 john 的 ECMP 整合測試算 PASS 了

1520

改一下 profile - m330[release/v0.08] - 找一個 PROSRC_WIFI_STA 有 turn on 的 profile

  • Vendor/Products = GENERIC/1_GENERIC_WIFI

當 WAN priority 為 Autoimage

Status 頁面會顯示 WAN DNS image


當 WAN priority 為 LTE Only 且 LTE Net Mode 為 Router Only

Status 頁面會顯示 WAN DNS image


當 WAN priority 為 LTE Only 且 LTE Net Mode 為 Bridge Onlyimage

Status 頁面會顯示 WAN DNS image


當 WAN priority 為 ETH Onlyimage

Status 頁面沒有顯示 WAN DNS - 這是個 bug


當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Bridge Onlyimage

Status 頁面沒有顯示 WAN DNS - 這是個 bug


當 WAN priority 為 WiFi Only 且 WiFi Mode 為 Router Onlyimage

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 頁面吧

⚠️ **GitHub.com Fallback** ⚠️