瀏覽代碼

rename fio field to description in user_list

Dmitriev Roman 3 月之前
父節點
當前提交
4f7e30f990

+ 1 - 1
docs/databases/mysql/en/create_db.sql

@@ -395,7 +395,7 @@ CREATE TABLE `user_list` (
   `id` bigint(20) UNSIGNED NOT NULL,
   `id` bigint(20) UNSIGNED NOT NULL,
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `login` varchar(255) DEFAULT NULL,
   `login` varchar(255) DEFAULT NULL,
-  `fio` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,

+ 1 - 1
docs/databases/mysql/ru/create_db.sql

@@ -395,7 +395,7 @@ CREATE TABLE `user_list` (
   `id` bigint(20) UNSIGNED NOT NULL,
   `id` bigint(20) UNSIGNED NOT NULL,
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `login` varchar(255) DEFAULT NULL,
   `login` varchar(255) DEFAULT NULL,
-  `fio` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,

+ 2 - 2
docs/databases/postgres/en/create_db.sql

@@ -517,7 +517,7 @@ CREATE TABLE user_list (
 id BIGSERIAL PRIMARY KEY,
 id BIGSERIAL PRIMARY KEY,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 login VARCHAR(255),
 login VARCHAR(255),
-fio VARCHAR(255),
+description VARCHAR(255),
 enabled SMALLINT NOT NULL DEFAULT 1,
 enabled SMALLINT NOT NULL DEFAULT 1,
 blocked SMALLINT NOT NULL DEFAULT 0,
 blocked SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
@@ -530,7 +530,7 @@ month_quota INTEGER NOT NULL DEFAULT 0,
 permanent SMALLINT NOT NULL DEFAULT 0
 permanent SMALLINT NOT NULL DEFAULT 0
 );
 );
 COMMENT ON TABLE user_list IS 'User accounts in the system';
 COMMENT ON TABLE user_list IS 'User accounts in the system';
-COMMENT ON COLUMN user_list.fio IS 'Full name';
+COMMENT ON COLUMN user_list.description IS 'Full name';
 COMMENT ON COLUMN user_list.permanent IS 'Permanent (non-dynamic) user';
 COMMENT ON COLUMN user_list.permanent IS 'Permanent (non-dynamic) user';
 
 
 -- User web sessions
 -- User web sessions

+ 2 - 2
docs/databases/postgres/ru/create_db.sql

@@ -518,7 +518,7 @@ CREATE TABLE user_list (
 id BIGSERIAL PRIMARY KEY,
 id BIGSERIAL PRIMARY KEY,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 login VARCHAR(255),
 login VARCHAR(255),
-fio VARCHAR(255),
+description VARCHAR(255),
 enabled SMALLINT NOT NULL DEFAULT 1,
 enabled SMALLINT NOT NULL DEFAULT 1,
 blocked SMALLINT NOT NULL DEFAULT 0,
 blocked SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
@@ -531,7 +531,7 @@ month_quota INTEGER NOT NULL DEFAULT 0,
 permanent SMALLINT NOT NULL DEFAULT 0
 permanent SMALLINT NOT NULL DEFAULT 0
 );
 );
 COMMENT ON TABLE user_list IS 'Учетные записи пользователей в системе';
 COMMENT ON TABLE user_list IS 'Учетные записи пользователей в системе';
-COMMENT ON COLUMN user_list.fio IS 'Фамилия Имя Отчество';
+COMMENT ON COLUMN user_list.description IS 'Фамилия Имя Отчество';
 COMMENT ON COLUMN user_list.permanent IS 'Это постоянный пользователь (не динамический)';
 COMMENT ON COLUMN user_list.permanent IS 'Это постоянный пользователь (не динамический)';
 
 
 -- Сессии пользователей (веб-интерфейс)
 -- Сессии пользователей (веб-интерфейс)

+ 1 - 1
html/admin/devices/index-passive.php

@@ -22,7 +22,7 @@ if ($unknown) { $unknown_checked='checked="checked"'; }
 
 
 $sort_table = 'A';
 $sort_table = 'A';
 if ($sort_field == 'login') { $sort_table = 'L'; }
 if ($sort_field == 'login') { $sort_table = 'L'; }
-if ($sort_field == 'fio') { $sort_table = 'L'; }
+if ($sort_field == 'description') { $sort_table = 'L'; }
 if ($sort_field == 'model_name') { $sort_table = 'M'; }
 if ($sort_field == 'model_name') { $sort_table = 'M'; }
 
 
 $sort_url = "<a href=index-passive.php?ou=" . $rou;
 $sort_url = "<a href=index-passive.php?ou=" . $rou;

+ 6 - 4
html/admin/iplist/index.php

@@ -16,7 +16,7 @@ require_once ($_SERVER['DOCUMENT_ROOT']."/inc/dhcpfilter.php");
 
 
 $sort_table = 'user_auth';
 $sort_table = 'user_auth';
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
-if ($sort_field == 'fio') { $sort_table = 'user_list'; }
+if ($sort_field == 'description') { $sort_table = 'user_list'; }
 if ($sort_field == 'ou_name') { $sort_table = 'ou'; }
 if ($sort_field == 'ou_name') { $sort_table = 'ou'; }
 
 
 $params=[];
 $params=[];
@@ -79,9 +79,11 @@ if (!empty($f_search_str)) {
     	    $ip_where =" and mac=?"; 
     	    $ip_where =" and mac=?"; 
     	    $params[]= mac_dotted($f_search_str);
     	    $params[]= mac_dotted($f_search_str);
     	    } else {
     	    } else {
-            $ip_where =" and (mac like ? or login like ? or description like ? or dns_name like ? or dhcp_hostname like ?)"; 
-            $params[]=mac_dotted($f_search);
-            $parmas[]=$f_search.'%';
+            $ip_where =" and (mac LIKE ? or login LIKE ? or user_auth.description LIKE ? or user_list.description LIKE ? or dns_name LIKE ? or dhcp_hostname LIKE ?)";
+            $mac_search = MaybeMac($f_search);
+            if (!empty($mac_search)) { $params[]=MaybeMac($f_search).'%'; } else { $params[]=$f_search_str.'%'; }
+            $params[]=$f_search.'%';
+            $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';

+ 1 - 1
html/admin/iplist/nagios.php

@@ -12,7 +12,7 @@ require_once ($_SERVER['DOCUMENT_ROOT']."/inc/enabledfilter.php");
 
 
 $sort_table = 'user_auth';
 $sort_table = 'user_auth';
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
-if ($sort_field == 'fio') { $sort_table = 'user_list'; }
+if ($sort_field == 'description') { $sort_table = 'user_list'; }
 
 
 $sort_url = "<a href=nagios.php?ou=" . $rou; 
 $sort_url = "<a href=nagios.php?ou=" . $rou; 
 
 

+ 9 - 9
html/admin/users/edituser.php

@@ -33,7 +33,7 @@ if (getPOST("edituser") !== null) {
         $new["login"] = $user_name;
         $new["login"] = $user_name;
     }
     }
     
     
-    $new["fio"] = trim(getPOST("f_fio", null, ''));
+    $new["description"] = trim(getPOST("f_description", null, ''));
 
 
     // Настройки по OU
     // Настройки по OU
     if (get_const('default_user_ou_id') == ($new["ou_id"] ?? 0) || 
     if (get_const('default_user_ou_id') == ($new["ou_id"] ?? 0) || 
@@ -63,11 +63,11 @@ if (getPOST("edituser") !== null) {
     }
     }
 
 
     // Обновляем описание в user_auth
     // Обновляем описание в user_auth
-    if (!empty($new["fio"])) {
+    if (!empty($new["description"])) {
         update_records($db_link, 'user_auth',
         update_records($db_link, 'user_auth',
             "user_id = ? AND deleted = 0 AND (description IS NULL OR description = '' OR description = ?)",
             "user_id = ? AND deleted = 0 AND (description IS NULL OR description = '' OR description = ?)",
-            ['description' => $new["fio"]],
-            [$id, $user_info["fio"]]
+            ['description' => $new["description"]],
+            [$id, $user_info["description"]]
         );
         );
     }
     }
 
 
@@ -289,11 +289,11 @@ if (getPOST("new_user") !== null) {
                     'ou_id' => $ou_id
                     'ou_id' => $ou_id
                 ];
                 ];
                 if (!empty($auth_info["description"])) {
                 if (!empty($auth_info["description"])) {
-                    $new_user_data["fio"] = $auth_info["description"];
+                    $new_user_data["description"] = $auth_info["description"];
                 } elseif (!empty($auth_info["dns_name"])) {
                 } elseif (!empty($auth_info["dns_name"])) {
-                    $new_user_data["fio"] = $auth_info["dns_name"];
+                    $new_user_data["description"] = $auth_info["dns_name"];
                 } elseif (!empty($auth_info["dhcp_hostname"])) {
                 } elseif (!empty($auth_info["dhcp_hostname"])) {
-                    $new_user_data["fio"] = $auth_info["dhcp_hostname"];
+                    $new_user_data["description"] = $auth_info["dhcp_hostname"];
                 }
                 }
 
 
                 $new_user_data["enabled"] = $auth_info["enabled"];
                 $new_user_data["enabled"] = $auth_info["enabled"];
@@ -328,13 +328,13 @@ require_once($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php");
         <table class="data">
         <table class="data">
             <tr>
             <tr>
                 <td colspan=2><?php print WEB_cell_login; ?></td>
                 <td colspan=2><?php print WEB_cell_login; ?></td>
-                <td colspan=2><?php print WEB_cell_fio; ?></td>
+                <td colspan=2><?php print WEB_cell_description; ?></td>
                 <td colspan=2><?php print WEB_cell_ou; ?></td>
                 <td colspan=2><?php print WEB_cell_ou; ?></td>
                 <td ><?php print WEB_user_permanent; ?></td>
                 <td ><?php print WEB_user_permanent; ?></td>
             </tr>
             </tr>
             <tr>
             <tr>
                 <td colspan=2><input type="text" name="f_login" value="<?php print $user_info["login"]; ?>" size=25></td>
                 <td colspan=2><input type="text" name="f_login" value="<?php print $user_info["login"]; ?>" size=25></td>
-                <td colspan=2><input type="text" name="f_fio" value="<?php print $user_info["fio"]; ?>" size=25></td>
+                <td colspan=2><input type="text" name="f_description" value="<?php print $user_info["description"]; ?>" size=25></td>
                 <td colspan=2><?php print_ou_set($db_link, 'f_ou', $user_info["ou_id"]); ?></td>
                 <td colspan=2><?php print_ou_set($db_link, 'f_ou', $user_info["ou_id"]); ?></td>
                 <td><?php print_qa_select('f_permanent', $user_info["permanent"]); ?></td>
                 <td><?php print_qa_select('f_permanent', $user_info["permanent"]); ?></td>
             </tr>
             </tr>

+ 4 - 4
html/admin/users/index.php

@@ -133,7 +133,7 @@ if ($rou != 0) {
 $whereClause = implode(' AND ', $conditions);
 $whereClause = implode(' AND ', $conditions);
 
 
 // === 2. Безопасная сортировка (БЕЛЫЙ СПИСОК!) ===
 // === 2. Безопасная сортировка (БЕЛЫЙ СПИСОК!) ===
-$allowed_sort_fields = ['id', 'login', 'fio', 'ou_name', 'enabled', 'day_quota', 'month_quota', 'blocked', 'permanent'];
+$allowed_sort_fields = ['id', 'login', 'description', 'ou_name', 'enabled', 'day_quota', 'month_quota', 'blocked', 'permanent'];
 $allowed_order = ['ASC', 'DESC'];
 $allowed_order = ['ASC', 'DESC'];
 
 
 $sort_field = in_array($sort_field, $allowed_sort_fields, true) ? $sort_field : 'id';
 $sort_field = in_array($sort_field, $allowed_sort_fields, true) ? $sort_field : 'id';
@@ -158,7 +158,7 @@ $dataParams = array_merge($params, [$limit, $offset]);
 
 
 $sSQL = "
 $sSQL = "
     SELECT 
     SELECT 
-        U.id, U.login, U.fio, O.ou_name, U.enabled, 
+        U.id, U.login, U.description, O.ou_name, U.enabled, 
         U.day_quota, U.month_quota, U.blocked, U.permanent
         U.day_quota, U.month_quota, U.blocked, U.permanent
     FROM user_list U
     FROM user_list U
     JOIN ou O ON U.ou_id = O.id
     JOIN ou O ON U.ou_id = O.id
@@ -178,7 +178,7 @@ $users = get_records_sql($db_link, $sSQL, $dataParams);
 <td><input type="checkbox" onClick="checkAll(this.checked);"></td>
 <td><input type="checkbox" onClick="checkAll(this.checked);"></td>
 <td><b><?php print $sort_url . "sort=id&order=$new_order>id</a>"; ?></b></td>
 <td><b><?php print $sort_url . "sort=id&order=$new_order>id</a>"; ?></b></td>
 <td><b><?php print $sort_url . "sort=login&order=$new_order>" . WEB_cell_login . "</a>"; ?></b></td>
 <td><b><?php print $sort_url . "sort=login&order=$new_order>" . WEB_cell_login . "</a>"; ?></b></td>
-<td><b><?php print $sort_url . "sort=fio&order=$new_order>" . WEB_cell_fio . "</a>"; ?></b></td>
+<td><b><?php print $sort_url . "sort=description&order=$new_order>" . WEB_cell_description . "</a>"; ?></b></td>
 <td><b><?php print WEB_cell_rule; ?></b></td>
 <td><b><?php print WEB_cell_rule; ?></b></td>
 <td><b><?php print WEB_cell_ou; ?></b></td>
 <td><b><?php print WEB_cell_ou; ?></b></td>
 <td><b><?php print WEB_cell_enabled; ?></b></td>
 <td><b><?php print WEB_cell_enabled; ?></b></td>
@@ -211,7 +211,7 @@ foreach ($users as $row) {
     print "<td class=\"$cl_id\">".$row['id']."</td>\n";
     print "<td class=\"$cl_id\">".$row['id']."</td>\n";
     if (empty($row['login'])) { $row['login']=$row['id']; }
     if (empty($row['login'])) { $row['login']=$row['id']; }
     print "<td class=\"$cl\" align=left><a href=edituser.php?id=".$row['id'].">" . $row['login'] . "</a></td>\n";
     print "<td class=\"$cl\" align=left><a href=edituser.php?id=".$row['id'].">" . $row['login'] . "</a></td>\n";
-    print "<td class=\"$cl\">".$row['fio']."</td>\n";
+    print "<td class=\"$cl\">".$row['description']."</td>\n";
     $rules_count = get_count_records($db_link,"auth_rules","user_id=?", [$row['id']]);
     $rules_count = get_count_records($db_link,"auth_rules","user_id=?", [$row['id']]);
     print "<td class=\"$cl\">".$rules_count."</td>\n";
     print "<td class=\"$cl\">".$rules_count."</td>\n";
     print "<td class=\"$cl\">".$row['ou_name']."</td>\n";
     print "<td class=\"$cl\">".$row['ou_name']."</td>\n";

+ 1 - 1
html/api.php

@@ -173,7 +173,7 @@ if (!empty($action)) {
         
         
         // Разрешённые поля для обновления
         // Разрешённые поля для обновления
         $allowed_fields = [
         $allowed_fields = [
-            'login', 'fio', 'enabled', 'blocked', 'ou_id', 
+            'login', 'description', 'enabled', 'blocked', 'ou_id', 
             'filter_group_id', 'queue_id', 'day_quota', 'month_quota', 'permanent'
             'filter_group_id', 'queue_id', 'day_quota', 'month_quota', 'permanent'
         ];
         ];
         
         

+ 9 - 9
html/inc/common.php

@@ -2090,12 +2090,12 @@ function print_auth_select($db, $login_name, $current_auth)
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     
     
     $params = [];
     $params = [];
-    $sql = "SELECT U.login, U.fio, A.ip, A.id 
+    $sql = "SELECT U.login, U.description, A.ip, A.id 
             FROM user_list AS U, user_auth AS A 
             FROM user_list AS U, user_auth AS A 
             WHERE A.user_id = U.id 
             WHERE A.user_id = U.id 
               AND A.deleted = 0 
               AND A.deleted = 0 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
-            ORDER BY U.login, U.fio, A.ip";
+            ORDER BY U.login, U.description, A.ip";
     
     
     $params[] = (int)$current_auth;
     $params[] = (int)$current_auth;
     $t_login = get_records_sql($db, $sql, $params);
     $t_login = get_records_sql($db, $sql, $params);
@@ -2103,7 +2103,7 @@ function print_auth_select($db, $login_name, $current_auth)
     print_select_item('Empty', 0, $current_auth);
     print_select_item('Empty', 0, $current_auth);
     
     
     foreach ($t_login as $row) {
     foreach ($t_login as $row) {
-        $display = htmlspecialchars($row['login']) . "[" . htmlspecialchars($row['fio']) . "] - " . htmlspecialchars($row['ip']);
+        $display = htmlspecialchars($row['login']) . "[" . htmlspecialchars($row['description']) . "] - " . htmlspecialchars($row['ip']);
         print_select_item($display, $row['id'], $current_auth);
         print_select_item($display, $row['id'], $current_auth);
     }
     }
     echo "</select>\n";
     echo "</select>\n";
@@ -2114,12 +2114,12 @@ function print_auth_select_mac($db, $login_name, $current_auth)
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     
     
     $params = [];
     $params = [];
-    $sql = "SELECT U.login, U.fio, A.ip, A.mac, A.id 
+    $sql = "SELECT U.login, U.description, A.ip, A.mac, A.id 
             FROM user_list AS U, user_auth AS A 
             FROM user_list AS U, user_auth AS A 
             WHERE A.user_id = U.id 
             WHERE A.user_id = U.id 
               AND A.deleted = 0 
               AND A.deleted = 0 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
-            ORDER BY U.login, U.fio, A.ip";
+            ORDER BY U.login, U.description, A.ip";
     
     
     $params[] = (int)$current_auth;
     $params[] = (int)$current_auth;
     $t_login = get_records_sql($db, $sql, $params);
     $t_login = get_records_sql($db, $sql, $params);
@@ -2886,8 +2886,8 @@ function apply_auth_rule($db, $auth_record, $user_id)
     $auth_record['changed'] = 1;
     $auth_record['changed'] = 1;
     
     
     // Maybe fill description?
     // Maybe fill description?
-    if (!empty($user_rec['fio']) && empty($auth_record['description'])) {
-        $auth_record['description'] = $user_rec['fio'];
+    if (!empty($user_rec['description']) && empty($auth_record['description'])) {
+        $auth_record['description'] = $user_rec['description'];
     }
     }
     
     
     return $auth_record;
     return $auth_record;
@@ -2927,9 +2927,9 @@ function new_user($db, $user_info)
     }
     }
     
     
     if (!empty($user_info['dhcp_hostname'])) {
     if (!empty($user_info['dhcp_hostname'])) {
-        $user['fio'] = ($user_info['ip'] ?? '') . '[' . $user_info['dhcp_hostname'] . ']';
+        $user['description'] = ($user_info['ip'] ?? '') . '[' . $user_info['dhcp_hostname'] . ']';
     } else {
     } else {
-        $user['fio'] = $user_info['ip'] ?? '';
+        $user['description'] = $user_info['ip'] ?? '';
     }
     }
     
     
     // Проверяем существование логина и формируем уникальный
     // Проверяем существование логина и формируем уникальный

+ 1 - 1
html/inc/languages/english.php

@@ -175,7 +175,7 @@ define("WEB_title_itog","Total");
 
 
 /* table cell names */
 /* table cell names */
 define("WEB_cell_login","Login");
 define("WEB_cell_login","Login");
-define("WEB_cell_fio","Full name");
+define("WEB_cell_description","Full name");
 define("WEB_cell_ou","Group");
 define("WEB_cell_ou","Group");
 define("WEB_cell_enabled","Enabled");
 define("WEB_cell_enabled","Enabled");
 define("WEB_cell_blocked","Blocking");
 define("WEB_cell_blocked","Blocking");

+ 1 - 1
html/inc/languages/russian.php

@@ -175,7 +175,7 @@ define("WEB_title_itog","Итого");
 
 
 /* table cell names */
 /* table cell names */
 define("WEB_cell_login","Логин");
 define("WEB_cell_login","Логин");
-define("WEB_cell_fio","ФИО");
+define("WEB_cell_description","ФИО");
 define("WEB_cell_ou","Группа");
 define("WEB_cell_ou","Группа");
 define("WEB_cell_enabled","Включен");
 define("WEB_cell_enabled","Включен");
 define("WEB_cell_blocked","Блокировка");
 define("WEB_cell_blocked","Блокировка");

+ 1 - 1
html/inc/sql.php

@@ -693,7 +693,7 @@ function allow_update($table, $action = 'update', $field = '')
                 'Wikiname' => true
                 'Wikiname' => true
             ],
             ],
             'user_list' => [
             'user_list' => [
-                'fio' => true,
+                'description' => true,
                 'login' => true
                 'login' => true
             ]
             ]
         ];
         ];

+ 3 - 3
html/public/blocked.php

@@ -24,7 +24,7 @@ $sql = "
     SELECT 
     SELECT 
         ul.id AS user_id,
         ul.id AS user_id,
         ul.login,
         ul.login,
-        ul.fio,
+        ul.description,
         ul.enabled AS user_enabled,
         ul.enabled AS user_enabled,
         ul.blocked AS user_blocked,
         ul.blocked AS user_blocked,
         ul.month_quota,
         ul.month_quota,
@@ -119,8 +119,8 @@ $month_user_sum_out = $month_traffic['user_out'] ?? 0;
     <td><?php print htmlspecialchars($record['login'], ENT_QUOTES); ?></td>
     <td><?php print htmlspecialchars($record['login'], ENT_QUOTES); ?></td>
 </tr>
 </tr>
 <tr>
 <tr>
-    <td><b><?php echo WEB_cell_fio; ?></b></td>
-    <td><?php print htmlspecialchars($record['fio'], ENT_QUOTES); ?></td>
+    <td><b><?php echo WEB_cell_description; ?></b></td>
+    <td><?php print htmlspecialchars($record['description'], ENT_QUOTES); ?></td>
 </tr>
 </tr>
 <tr>
 <tr>
     <td><?php echo WEB_msg_access_login; ?></td>
     <td><?php echo WEB_msg_access_login; ?></td>

+ 5 - 5
scripts/eyelib/common.pm

@@ -166,7 +166,7 @@ my $db = shift;
 my $user_id = shift;
 my $user_id = shift;
 my $user_record = get_record_sql($db,'SELECT * FROM user_list WHERE id='.$user_id);
 my $user_record = get_record_sql($db,'SELECT * FROM user_list WHERE id='.$user_id);
 my $user_ident = 'id:'. $user_record->{'id'} . ' '. $user_record->{'login'};
 my $user_ident = 'id:'. $user_record->{'id'} . ' '. $user_record->{'login'};
-$user_ident = $user_ident . '[' . $user_record->{'fio'} . ']' if ($user_record->{'fio'});
+$user_ident = $user_ident . '[' . $user_record->{'description'} . ']' if ($user_record->{'description'});
 my $msg = "Amnistuyemo blocked by traffic user $user_ident \nInternet access for the user's IP address has been restored:\n";
 my $msg = "Amnistuyemo blocked by traffic user $user_ident \nInternet access for the user's IP address has been restored:\n";
 my @user_auth = get_records_sql($db,'SELECT * FROM user_auth WHERE deleted=0 AND user_id='.$user_id);
 my @user_auth = get_records_sql($db,'SELECT * FROM user_auth WHERE deleted=0 AND user_id='.$user_id);
 my $send_alert = 0;
 my $send_alert = 0;
@@ -1055,8 +1055,8 @@ if ($user_info->{mac}) {
     $user->{login}=$user_info->{ip};
     $user->{login}=$user_info->{ip};
     }
     }
 
 
-if ($user_info->{dhcp_hostname}) { $user->{fio}=$user_info->{dhcp_hostname}; } 
-if (!$user->{fio}) { $user->{fio}=$user_info->{ip}; }
+if ($user_info->{dhcp_hostname}) { $user->{description}=$user_info->{dhcp_hostname}; } 
+if (!$user->{description}) { $user->{description}=$user_info->{ip}; }
 
 
 my $login_count = get_count_records($db,"user_list","(login LIKE '".$user->{login}."(%)') OR (login='".$user->{login}."')");
 my $login_count = get_count_records($db,"user_list","(login LIKE '".$user->{login}."(%)') OR (login='".$user->{login}."')");
 if ($login_count) { $login_count++; $user->{login} .="(".$login_count.")"; }
 if ($login_count) { $login_count++; $user->{login} .="(".$login_count.")"; }
@@ -1280,7 +1280,7 @@ if ($cur_auth_id) {
                     $new_record->{'end_life'} = $end_life->strftime('%Y-%m-%d %H:%M:%S');
                     $new_record->{'end_life'} = $end_life->strftime('%Y-%m-%d %H:%M:%S');
 		    }
 		    }
 	    $new_record->{ou_id}=$user_record->{ou_id};
 	    $new_record->{ou_id}=$user_record->{ou_id};
-	    $new_record->{description}=$user_record->{fio};
+	    $new_record->{description}=$user_record->{description};
 	    $new_record->{filter_group_id}=$user_record->{filter_group_id};
 	    $new_record->{filter_group_id}=$user_record->{filter_group_id};
 	    $new_record->{queue_id}=$user_record->{queue_id};
 	    $new_record->{queue_id}=$user_record->{queue_id};
 	    $new_record->{enabled}="$user_record->{enabled}";
 	    $new_record->{enabled}="$user_record->{enabled}";
@@ -1325,7 +1325,7 @@ $new_record->{ou_id}=$user_record->{ou_id};
 $new_record->{filter_group_id}=$user_record->{filter_group_id};
 $new_record->{filter_group_id}=$user_record->{filter_group_id};
 $new_record->{queue_id}=$user_record->{queue_id};
 $new_record->{queue_id}=$user_record->{queue_id};
 $new_record->{enabled}="$user_record->{enabled}";
 $new_record->{enabled}="$user_record->{enabled}";
-if ($user_record->{fio}) { $new_record->{description}=$user_record->{fio}; }
+if ($user_record->{description}) { $new_record->{description}=$user_record->{description}; }
 
 
 my $cur_auth_id=insert_record($db,'user_auth',$new_record);
 my $cur_auth_id=insert_record($db,'user_auth',$new_record);
 if ($cur_auth_id) {
 if ($cur_auth_id) {

+ 1 - 1
scripts/gen_nagios_config.pl

@@ -165,7 +165,7 @@ if (scalar(@auth_list)>0) {
         my $login = get_record_sql($dbh,"SELECT * FROM user_list WHERE id=?",$auth->{'user_id'});
         my $login = get_record_sql($dbh,"SELECT * FROM user_list WHERE id=?",$auth->{'user_id'});
     
     
         $devices{$device_id}{user_login} = $login->{login};
         $devices{$device_id}{user_login} = $login->{login};
-        $devices{$device_id}{user_fio} = $login->{fio};
+        $devices{$device_id}{user_description} = $login->{description};
         $devices{$device_id}{ou_id} = 0;
         $devices{$device_id}{ou_id} = 0;
 	if ($login and $login->{ou_id} and $ou{$login->{ou_id}}->{nagios_dir}) { $devices{$device_id}{ou_id} = $login->{ou_id}; }
 	if ($login and $login->{ou_id} and $ou{$login->{ou_id}}->{nagios_dir}) { $devices{$device_id}{ou_id} = $login->{ou_id}; }
         $devices{$device_id}{ou}=$ou{$devices{$device_id}{ou_id}};
         $devices{$device_id}{ou}=$ou{$devices{$device_id}{ou_id}};

+ 2 - 2
scripts/updates/3-0-1/migration.msql

@@ -53,6 +53,7 @@ ALTER TABLE unknown_mac     CHANGE COLUMN `timestamp` ts TIMESTAMP NOT NULL DEFA
 ALTER TABLE user_auth_alias CHANGE COLUMN `timestamp` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 ALTER TABLE user_auth_alias CHANGE COLUMN `timestamp` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 
 
 -- time/date → ts
 -- time/date → ts
+DELETE FROM wan_stats WHERE `time` <= '1970-01-01 03:00:00' OR `time` = '0000-00-00 00:00:00';
 ALTER TABLE wan_stats     CHANGE COLUMN `time` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 ALTER TABLE wan_stats     CHANGE COLUMN `time` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 ALTER TABLE remote_syslog CHANGE COLUMN `date` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 ALTER TABLE remote_syslog CHANGE COLUMN `date` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 
 
@@ -66,7 +67,6 @@ ALTER TABLE filter_list      ADD COLUMN comment VARCHAR(250);
 ALTER TABLE group_list       ADD COLUMN comment VARCHAR(250);
 ALTER TABLE group_list       ADD COLUMN comment VARCHAR(250);
 ALTER TABLE ou               ADD COLUMN comment VARCHAR(250);
 ALTER TABLE ou               ADD COLUMN comment VARCHAR(250);
 ALTER TABLE subnets          ADD COLUMN comment VARCHAR(250);
 ALTER TABLE subnets          ADD COLUMN comment VARCHAR(250);
-ALTER TABLE user_list        ADD COLUMN comment VARCHAR(255);
 ALTER TABLE vendors          ADD COLUMN comment VARCHAR(255);
 ALTER TABLE vendors          ADD COLUMN comment VARCHAR(255);
 
 
 -- Теперь безопасно переименовываем `comment` → `description`
 -- Теперь безопасно переименовываем `comment` → `description`
@@ -79,7 +79,7 @@ ALTER TABLE filter_list      CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE group_list       CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE group_list       CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE ou               CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE ou               CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE subnets          CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE subnets          CHANGE COLUMN `comment` description VARCHAR(250);
-ALTER TABLE user_list        CHANGE COLUMN `comment` description VARCHAR(255);
+ALTER TABLE user_list        CHANGE COLUMN `fio` description VARCHAR(255);
 ALTER TABLE vendors          CHANGE COLUMN `comment` description VARCHAR(255);
 ALTER TABLE vendors          CHANGE COLUMN `comment` description VARCHAR(255);
 
 
 -- user_auth.comments → description
 -- user_auth.comments → description

+ 2 - 2
scripts/utils/import/import_auth.pl

@@ -137,7 +137,7 @@ for my $record (@rows) {
         }
         }
 
 
         if (exists $record->{description}) {
         if (exists $record->{description}) {
-            update_record($dbh, 'user_list', { fio => $record->{description} }, 'id = ?', $user_id);
+            update_record($dbh, 'user_list', { description => $record->{description} }, 'id = ?', $user_id);
         }
         }
 
 
         next;
         next;
@@ -165,7 +165,7 @@ for my $record (@rows) {
         }
         }
 
 
         if (exists $record->{description}) {
         if (exists $record->{description}) {
-            update_record($dbh, 'user_list', { fio => $record->{description} }, 'id = ?', $user_id);
+            update_record($dbh, 'user_list', { description => $record->{description} }, 'id = ?', $user_id);
         }
         }
     }
     }
 }
 }

+ 41 - 0
scripts/utils/mac-oids/manuf.csv

@@ -17557,6 +17557,7 @@
 04:5C:8E;gosundGROUP;gosund GROUP CO.,LTD
 04:5C:8E;gosundGROUP;gosund GROUP CO.,LTD
 04:5D:4B;Sony;Sony Corporation
 04:5D:4B;Sony;Sony Corporation
 04:5D:56;camtronindus;camtron industrial inc.
 04:5D:56;camtronindus;camtron industrial inc.
+04:5E:0A;TranschanTec;Shenzhen Transchan Technology Limited
 04:5E:A4;NetisTechnol;Netis Technology Co., Ltd.
 04:5E:A4;NetisTechnol;Netis Technology Co., Ltd.
 04:5F:A6;SDMCTechnolo;Shenzhen SDMC Technology CP,.LTD
 04:5F:A6;SDMCTechnolo;Shenzhen SDMC Technology CP,.LTD
 04:5F:A7;YichenTechno;Shenzhen Yichen Technology Development Co.,LTD
 04:5F:A7;YichenTechno;Shenzhen Yichen Technology Development Co.,LTD
@@ -19459,6 +19460,7 @@
 10:CB:33;NXPSemicondu;NXP Semiconductors Taiwan Ltd.
 10:CB:33;NXPSemicondu;NXP Semiconductors Taiwan Ltd.
 10:CC:1B;Liverocktech;Liverock technologies,INC
 10:CC:1B;Liverocktech;Liverock technologies,INC
 10:CC:DB;AximumProdui;Aximum Produits Electroniques
 10:CC:DB;AximumProdui;Aximum Produits Electroniques
+10:CD:54;HuaweiTechno;Huawei Technologies Co.,Ltd
 10:CD:6E;Fisys;Fisys
 10:CD:6E;Fisys;Fisys
 10:CD:AE;Avaya;Avaya Inc
 10:CD:AE;Avaya;Avaya Inc
 10:CD:B6;EssentialPro;Essential Products, Inc.
 10:CD:B6;EssentialPro;Essential Products, Inc.
@@ -21365,6 +21367,7 @@
 20:9A:E9;Volacomm;Volacomm Co., Ltd
 20:9A:E9;Volacomm;Volacomm Co., Ltd
 20:9B:A5;JIAXINGGLEAD;JIAXING GLEAD Electronics Co.,Ltd
 20:9B:A5;JIAXINGGLEAD;JIAXING GLEAD Electronics Co.,Ltd
 20:9B:CD;Apple;Apple, Inc.
 20:9B:CD;Apple;Apple, Inc.
+20:9B:DD;HuaweiTechno;Huawei Technologies Co.,Ltd
 20:9B:E6;GuangzhouShi;Guangzhou Shiyuan Electronic Technology Company Limited
 20:9B:E6;GuangzhouShi;Guangzhou Shiyuan Electronic Technology Company Limited
 20:9C:B4;HewlettPacka;Hewlett Packard Enterprise
 20:9C:B4;HewlettPacka;Hewlett Packard Enterprise
 20:9E:79;UniversalEle;Universal Electronics, Inc.
 20:9E:79;UniversalEle;Universal Electronics, Inc.
@@ -22314,6 +22317,7 @@
 28:AF:FD;Cisco;Cisco Systems, Inc
 28:AF:FD;Cisco;Cisco Systems, Inc
 28:B0:CC;Xenyadoo;Xenya d.o.o.
 28:B0:CC;Xenyadoo;Xenya d.o.o.
 28:B1:33;SHINEMANTech;SHINEMAN(SHENZHEN) Tech. Cor., Ltd.
 28:B1:33;SHINEMANTech;SHINEMAN(SHENZHEN) Tech. Cor., Ltd.
+28:B2:0B;NXPUSA;NXP USA, Inc
 28:B2:21;SiendaMultim;Sienda Multimedia Ltd
 28:B2:21;SiendaMultim;Sienda Multimedia Ltd
 28:B2:7C;SailingNorth;Sailing Northern Technology
 28:B2:7C;SailingNorth;Sailing Northern Technology
 28:B2:BD;Intel;Intel Corporate
 28:B2:BD;Intel;Intel Corporate
@@ -22918,6 +22922,7 @@
 2C:AC:44;Conextop;Conextop
 2C:AC:44;Conextop;Conextop
 2C:AD:13;ZhiluTechnol;Shenzhen Zhilu Technology Co.,Ltd
 2C:AD:13;ZhiluTechnol;Shenzhen Zhilu Technology Co.,Ltd
 2C:AE:2B;SamsungElect;Samsung Electronics Co.,Ltd
 2C:AE:2B;SamsungElect;Samsung Electronics Co.,Ltd
+2C:AE:46;CloudNetwork;Cloud Network Technology Singapore Pte. Ltd.
 2C:AF:C4;Private;Private
 2C:AF:C4;Private;Private
 2C:B0:5D;Netgear;Netgear
 2C:B0:5D;Netgear;Netgear
 2C:B0:DF;SolitonTechn;Soliton Technologies Pvt Ltd
 2C:B0:DF;SolitonTechn;Soliton Technologies Pvt Ltd
@@ -23630,6 +23635,7 @@
 34:1B:2D;Cisco;Cisco Systems, Inc
 34:1B:2D;Cisco;Cisco Systems, Inc
 34:1C:F0;XiaomiCommun;Xiaomi Communications Co Ltd
 34:1C:F0;XiaomiCommun;Xiaomi Communications Co Ltd
 34:1E:6B;HuaweiTechno;Huawei Technologies Co.,Ltd
 34:1E:6B;HuaweiTechno;Huawei Technologies Co.,Ltd
+34:1F:C4;VLinkTechnol;Shenzhen V-Link Technology CO., LTD.
 34:1F:E4;Commscope;Commscope
 34:1F:E4;Commscope;Commscope
 34:20:03;FeitengyunTe;Shenzhen Feitengyun Technology Co.,LTD
 34:20:03;FeitengyunTe;Shenzhen Feitengyun Technology Co.,LTD
 34:20:E3;RuckusWirele;Ruckus Wireless
 34:20:E3;RuckusWirele;Ruckus Wireless
@@ -24261,6 +24267,7 @@
 38:45:54;HarmanBecker;Harman/Becker Automotive Systems GmbH
 38:45:54;HarmanBecker;Harman/Becker Automotive Systems GmbH
 38:45:8C;MyCloudTechn;MyCloud Technology corporation
 38:45:8C;MyCloudTechn;MyCloud Technology corporation
 38:46:08;zte;zte corporation
 38:46:08;zte;zte corporation
+38:47:12;LuxotticaTri;Luxottica Tristar (Dongguan) Optical Co.,Ltd
 38:47:BC;HuaweiTechno;Huawei Technologies Co.,Ltd
 38:47:BC;HuaweiTechno;Huawei Technologies Co.,Ltd
 38:47:F2;Recogni;Recogni Inc
 38:47:F2;Recogni;Recogni Inc
 38:48:4C;Apple;Apple, Inc.
 38:48:4C;Apple;Apple, Inc.
@@ -24858,6 +24865,7 @@
 3C:62:78;JetnetTechno;Shenzhen Jetnet Technology Co.,Ltd.
 3C:62:78;JetnetTechno;Shenzhen Jetnet Technology Co.,Ltd.
 3C:62:F0;Sercomm;Sercomm Corporation.
 3C:62:F0;Sercomm;Sercomm Corporation.
 3C:64:CF;TPLink;TP-Link Systems Inc
 3C:64:CF;TPLink;TP-Link Systems Inc
+3C:65:D1;HuaweiTechno;Huawei Technologies Co.,Ltd
 3C:67:16;LilyRobotics;Lily Robotics
 3C:67:16;LilyRobotics;Lily Robotics
 3C:67:2C;Sciovid;Sciovid Inc.
 3C:67:2C;Sciovid;Sciovid Inc.
 3C:67:8C;HuaweiTechno;Huawei Technologies Co.,Ltd
 3C:67:8C;HuaweiTechno;Huawei Technologies Co.,Ltd
@@ -27792,6 +27800,7 @@
 50:5F:B5;AskeyCompute;Askey Computer Corp
 50:5F:B5;AskeyCompute;Askey Computer Corp
 50:60:28;Xirrus;Xirrus Inc.
 50:60:28;Xirrus;Xirrus Inc.
 50:61:3F;eero;eero inc.
 50:61:3F;eero;eero inc.
+50:61:7E;MiaoMingInte;Shenzhen MiaoMing Intelligent Technology Co.,Ltd
 50:61:84;Avaya;Avaya Inc
 50:61:84;Avaya;Avaya Inc
 50:61:BF;Cisco;Cisco Systems, Inc
 50:61:BF;Cisco;Cisco Systems, Inc
 50:61:D6;InduSol;Indu-Sol GmbH
 50:61:D6;InduSol;Indu-Sol GmbH
@@ -28204,6 +28213,7 @@
 54:22:E0;Adtran;Adtran Inc
 54:22:E0;Adtran;Adtran Inc
 54:22:F8;zte;zte corporation
 54:22:F8;zte;zte corporation
 54:25:EA;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:25:EA;HuaweiTechno;Huawei Technologies Co.,Ltd
+54:26:18;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:26:3D;Sony;Sony Corporation
 54:26:3D;Sony;Sony Corporation
 54:26:96;Apple;Apple, Inc.
 54:26:96;Apple;Apple, Inc.
 54:27:1E;AzureWaveTec;AzureWave Technology Inc.
 54:27:1E;AzureWaveTec;AzureWave Technology Inc.
@@ -28311,6 +28321,7 @@
 54:69:90;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:69:90;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:6A:D8;ElsterWaterM;Elster Water Metering
 54:6A:D8;ElsterWaterM;Elster Water Metering
 54:6C:0E;TexasInstrum;Texas Instruments
 54:6C:0E;TexasInstrum;Texas Instruments
+54:6C:50;NanjingQinhe;Nanjing Qinheng Microelectronics Co., Ltd.
 54:6C:AC;Intelbras;Intelbras
 54:6C:AC;Intelbras;Intelbras
 54:6C:EB;Intel;Intel Corporate
 54:6C:EB;Intel;Intel Corporate
 54:6D:52;TopviewOptro;Topview Optronics Corp.
 54:6D:52;TopviewOptro;Topview Optronics Corp.
@@ -29185,6 +29196,7 @@
 5C:46:B0;SIMComWirele;SIMCom Wireless Solutions Limited
 5C:46:B0;SIMComWirele;SIMCom Wireless Solutions Limited
 5C:47:5E;Ring;Ring LLC
 5C:47:5E;Ring;Ring LLC
 5C:48:42;AnysoftInfor;Hangzhou Anysoft Information Technology Co. , Ltd
 5C:48:42;AnysoftInfor;Hangzhou Anysoft Information Technology Co. , Ltd
+5C:48:79;HuaweiTechno;Huawei Technologies Co.,Ltd
 5C:49:79;AVMAudiovisu;AVM Audiovisuelles Marketing und Computersysteme GmbH
 5C:49:79;AVMAudiovisu;AVM Audiovisuelles Marketing und Computersysteme GmbH
 5C:49:7D;SamsungElect;Samsung Electronics Co.,Ltd
 5C:49:7D;SamsungElect;Samsung Electronics Co.,Ltd
 5C:49:FA;GuoweiShidai;Shenzhen Guowei Shidai Communication Equipement Co., Ltd
 5C:49:FA;GuoweiShidai;Shenzhen Guowei Shidai Communication Equipement Co., Ltd
@@ -29582,6 +29594,7 @@
 5C:FC:E1;Resideo;Resideo
 5C:FC:E1;Resideo;Resideo
 5C:FE:9E;WiwynnTainan;Wiwynn Corporation Tainan Branch
 5C:FE:9E;WiwynnTainan;Wiwynn Corporation Tainan Branch
 5C:FF:35;Wistron;Wistron Corporation
 5C:FF:35;Wistron;Wistron Corporation
+5C:FF:A9;zte;zte corporation
 5C:FF:FF;KezhonglongO;Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd
 5C:FF:FF;KezhonglongO;Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd
 60:01:94;Espressif;Espressif Inc.
 60:01:94;Espressif;Espressif Inc.
 60:01:B1;HuaweiTechno;Huawei Technologies Co.,Ltd
 60:01:B1;HuaweiTechno;Huawei Technologies Co.,Ltd
@@ -30143,6 +30156,7 @@
 64:2C:AC;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2C:AC;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2D:B7;SeungilElect;Seungil Electronics
 64:2D:B7;SeungilElect;Seungil Electronics
 64:2E:41;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2E:41;HuaweiTechno;Huawei Technologies Co.,Ltd
+64:2F:1C;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2F:C7;NewH3CTechno;New H3C Technologies Co., Ltd
 64:2F:C7;NewH3CTechno;New H3C Technologies Co., Ltd
 64:31:35;Apple;Apple, Inc.
 64:31:35;Apple;Apple, Inc.
 64:31:39:00;EmeetIntelli;Shenzhen Emeet Intelligent Technology Co., Ltd.
 64:31:39:00;EmeetIntelli;Shenzhen Emeet Intelligent Technology Co., Ltd.
@@ -30383,6 +30397,7 @@
 64:B3:70;PowerCommSol;PowerComm Solutions LLC
 64:B3:70;PowerCommSol;PowerComm Solutions LLC
 64:B3:79;JiangsuVisco;Jiangsu Viscore Technologies Co.,Ltd
 64:B3:79;JiangsuVisco;Jiangsu Viscore Technologies Co.,Ltd
 64:B4:73;XiaomiCommun;Xiaomi Communications Co Ltd
 64:B4:73;XiaomiCommun;Xiaomi Communications Co Ltd
+64:B4:E8;DRobotics;Shenzhen D-Robotics Co., Ltd.
 64:B5:C6;Nintendo;Nintendo Co.,Ltd
 64:B5:C6;Nintendo;Nintendo Co.,Ltd
 64:B5:F2;SamsungElect;Samsung Electronics Co.,Ltd
 64:B5:F2;SamsungElect;Samsung Electronics Co.,Ltd
 64:B6:23;SchrackSecon;Schrack Seconet Care Communication GmbH
 64:B6:23;SchrackSecon;Schrack Seconet Care Communication GmbH
@@ -31223,6 +31238,7 @@
 6C:76:37;HuaweiDevice;Huawei Device Co., Ltd.
 6C:76:37;HuaweiDevice;Huawei Device Co., Ltd.
 6C:76:60;Kyocera;Kyocera Corporation
 6C:76:60;Kyocera;Kyocera Corporation
 6C:76:F7;MainStreamin;MainStreaming SpA
 6C:76:F7;MainStreamin;MainStreaming SpA
+6C:77:42;zte;zte corporation
 6C:77:F0;HuaweiDevice;Huawei Device Co., Ltd.
 6C:77:F0;HuaweiDevice;Huawei Device Co., Ltd.
 6C:78:C1;JuniperNetwo;Juniper Networks
 6C:78:C1;JuniperNetwo;Juniper Networks
 6C:79:B8;TexasInstrum;Texas Instruments
 6C:79:B8;TexasInstrum;Texas Instruments
@@ -36324,6 +36340,7 @@
 74:80:3F;RenesasElect;Renesas Electronics (Penang) Sdn. Bhd.
 74:80:3F;RenesasElect;Renesas Electronics (Penang) Sdn. Bhd.
 74:81:14;Apple;Apple, Inc.
 74:81:14;Apple;Apple, Inc.
 74:81:9A;PTHartonoIst;PT. Hartono Istana Teknologi
 74:81:9A;PTHartonoIst;PT. Hartono Istana Teknologi
+74:83:A0;MiaoMingInte;Shenzhen MiaoMing Intelligent Technology Co.,Ltd
 74:83:C2;Ubiquiti;Ubiquiti Inc
 74:83:C2;Ubiquiti;Ubiquiti Inc
 74:83:EF;AristaNetwor;Arista Networks
 74:83:EF;AristaNetwor;Arista Networks
 74:84:69;Nintendo;Nintendo Co.,Ltd
 74:84:69;Nintendo;Nintendo Co.,Ltd
@@ -36517,6 +36534,7 @@
 74:E5:F9;Intel;Intel Corporate
 74:E5:F9;Intel;Intel Corporate
 74:E6:0F;TecnoMobile;Tecno Mobile Limited
 74:E6:0F;TecnoMobile;Tecno Mobile Limited
 74:E6:B8;LGElectronic;LG Electronics
 74:E6:B8;LGElectronic;LG Electronics
+74:E6:C7;LUXSHAREICT;LUXSHARE-ICT Co., Ltd.
 74:E6:E2;Dell;Dell Inc.
 74:E6:E2;Dell;Dell Inc.
 74:E7:98;JuniperNetwo;Juniper Networks
 74:E7:98;JuniperNetwo;Juniper Networks
 74:E7:C6;Commscope;Commscope
 74:E7:C6;Commscope;Commscope
@@ -37917,7 +37935,10 @@
 80:76:77;puwellcloudt;hangzhou puwell cloud tech co., ltd.
 80:76:77;puwellcloudt;hangzhou puwell cloud tech co., ltd.
 80:76:93;Newag;Newag SA
 80:76:93;Newag;Newag SA
 80:76:C2;GDMideaAirCo;GD Midea Air-Conditioning Equipment Co.,Ltd.
 80:76:C2;GDMideaAirCo;GD Midea Air-Conditioning Equipment Co.,Ltd.
+80:77:86:10;Raycon;Raycon
 80:77:86:20;Wintec;Wintec Co., Ltd
 80:77:86:20;Wintec;Wintec Co., Ltd
+80:77:86:30;Demeas;Demeas
+80:77:86:40;RealtimeBiom;Realtime Biometrics India (P) limited
 80:77:A4;TecnoMobile;Tecno Mobile Limited
 80:77:A4;TecnoMobile;Tecno Mobile Limited
 80:78:71;AskeyCompute;Askey Computer Corp
 80:78:71;AskeyCompute;Askey Computer Corp
 80:79:33;AigentecTech;Aigentec Technology(Zhejiang) Co., Ltd.
 80:79:33;AigentecTech;Aigentec Technology(Zhejiang) Co., Ltd.
@@ -38033,6 +38054,7 @@
 80:AE:3C;TaicangT&WEl;Taicang T&W Electronics
 80:AE:3C;TaicangT&WEl;Taicang T&W Electronics
 80:AE:54;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 80:AE:54;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 80:AF:19;Apple;Apple, Inc.
 80:AF:19;Apple;Apple, Inc.
+80:AF:9F;eero;eero inc.
 80:AF:CA;CudyTechnolo;Shenzhen Cudy Technology Co., Ltd.
 80:AF:CA;CudyTechnolo;Shenzhen Cudy Technology Co., Ltd.
 80:B0:3D;Apple;Apple, Inc.
 80:B0:3D;Apple;Apple, Inc.
 80:B0:7B;zte;zte corporation
 80:B0:7B;zte;zte corporation
@@ -38213,6 +38235,7 @@
 84:15:71;TCTmobile;TCT mobile ltd
 84:15:71;TCTmobile;TCT mobile ltd
 84:15:D3;HuaweiTechno;Huawei Technologies Co.,Ltd
 84:15:D3;HuaweiTechno;Huawei Technologies Co.,Ltd
 84:16:0C;Broadcom;Broadcom Limited
 84:16:0C;Broadcom;Broadcom Limited
+84:16:23;zte;zte corporation
 84:16:F9;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 84:16:F9;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 84:17:15;GPElectronic;GP Electronics (HK) Ltd.
 84:17:15;GPElectronic;GP Electronics (HK) Ltd.
 84:17:66;WeifangGoert;Weifang Goertek Electronics Co.,Ltd
 84:17:66;WeifangGoert;Weifang Goertek Electronics Co.,Ltd
@@ -39446,6 +39469,7 @@
 8C:1F:64:13:30;Vtron;Vtron Pty Ltd
 8C:1F:64:13:30;Vtron;Vtron Pty Ltd
 8C:1F:64:13:50;YuvalFichman;Yuval Fichman
 8C:1F:64:13:50;YuvalFichman;Yuval Fichman
 8C:1F:64:13:80;Vissavisp;Vissavi sp. z o.o.
 8C:1F:64:13:80;Vissavisp;Vissavi sp. z o.o.
+8C:1F:64:13:B0;SDELcc;SDELcc
 8C:1F:64:13:C0;SiFive;SiFive Inc
 8C:1F:64:13:C0;SiFive;SiFive Inc
 8C:1F:64:13:E0;BtecIndustri;Btec Industrial Instrument Sdn. Bhd.
 8C:1F:64:13:E0;BtecIndustri;Btec Industrial Instrument Sdn. Bhd.
 8C:1F:64:13:F0;Elsist;Elsist Srl
 8C:1F:64:13:F0;Elsist;Elsist Srl
@@ -40194,6 +40218,7 @@
 8C:1F:64:5E:C0;NvBekaert;Nv Bekaert Sa
 8C:1F:64:5E:C0;NvBekaert;Nv Bekaert Sa
 8C:1F:64:5E:D0;DEUTAWerke;DEUTA Werke GmbH
 8C:1F:64:5E:D0;DEUTAWerke;DEUTA Werke GmbH
 8C:1F:64:5F:10;HDLink;HD Link Co., Ltd.
 8C:1F:64:5F:10;HDLink;HD Link Co., Ltd.
+8C:1F:64:5F:20;CMCAppliedTe;CMC Applied Technology institute
 8C:1F:64:5F:50;HongSeok;HongSeok Ltd.
 8C:1F:64:5F:50;HongSeok;HongSeok Ltd.
 8C:1F:64:5F:60;ForwardEdgeA;Forward Edge.AI
 8C:1F:64:5F:60;ForwardEdgeA;Forward Edge.AI
 8C:1F:64:5F:70;EagleHarborT;Eagle Harbor Technologies, Inc.
 8C:1F:64:5F:70;EagleHarborT;Eagle Harbor Technologies, Inc.
@@ -40283,6 +40308,7 @@
 8C:1F:64:68:00;Mitrol;Mitrol S.R.L.
 8C:1F:64:68:00;Mitrol;Mitrol S.R.L.
 8C:1F:64:68:10;wayfiwireles;wayfiwireless.com
 8C:1F:64:68:10;wayfiwireles;wayfiwireless.com
 8C:1F:64:68:30;Slat;Slat
 8C:1F:64:68:30;Slat;Slat
+8C:1F:64:68:40;PotterElectr;Potter Electric Signal Co. LLC
 8C:1F:64:68:50;SancharWirel;Sanchar Wireless Communications Ltd
 8C:1F:64:68:50;SancharWirel;Sanchar Wireless Communications Ltd
 8C:1F:64:68:60;Pazzk;Pazzk
 8C:1F:64:68:60;Pazzk;Pazzk
 8C:1F:64:68:70;Lamontec;Lamontec
 8C:1F:64:68:70;Lamontec;Lamontec
@@ -40433,6 +40459,7 @@
 8C:1F:64:76:80;mapnagroup;mapna group
 8C:1F:64:76:80;mapnagroup;mapna group
 8C:1F:64:76:90;Vonamic;Vonamic GmbH
 8C:1F:64:76:90;Vonamic;Vonamic GmbH
 8C:1F:64:76:A0;DorletSau;Dorlet Sau
 8C:1F:64:76:A0;DorletSau;Dorlet Sau
+8C:1F:64:76:B0;WheribleGPS;Wherible GPS, Inc.
 8C:1F:64:76:C0;GuanShowTech;Guan Show Technologe Co., Ltd.
 8C:1F:64:76:C0;GuanShowTech;Guan Show Technologe Co., Ltd.
 8C:1F:64:76:E0;develogic;develogic GmbH
 8C:1F:64:76:E0;develogic;develogic GmbH
 8C:1F:64:76:F0;INVENTIASp;INVENTIA Sp. z o.o.
 8C:1F:64:76:F0;INVENTIASp;INVENTIA Sp. z o.o.
@@ -40566,6 +40593,7 @@
 8C:1F:64:83:80;Drimaes;Drimaes Inc.
 8C:1F:64:83:80;Drimaes;Drimaes Inc.
 8C:1F:64:83:90;CEDARAudio;CEDAR Audio Ltd
 8C:1F:64:83:90;CEDARAudio;CEDAR Audio Ltd
 8C:1F:64:83:A0;Grossenbache;Grossenbacher Systeme AG
 8C:1F:64:83:A0;Grossenbache;Grossenbacher Systeme AG
+8C:1F:64:83:B0;StarviewAsia;Starview Asia Company
 8C:1F:64:83:C0;XtendTechnol;Xtend Technologies Pvt Ltd
 8C:1F:64:83:C0;XtendTechnol;Xtend Technologies Pvt Ltd
 8C:1F:64:83:D0;Lsignature;L-signature
 8C:1F:64:83:D0;Lsignature;L-signature
 8C:1F:64:83:E0;Sicon;Sicon srl
 8C:1F:64:83:E0;Sicon;Sicon srl
@@ -40972,6 +41000,7 @@
 8C:1F:64:AD:20;YUYAMAMFG;YUYAMA MFG Co.,Ltd
 8C:1F:64:AD:20;YUYAMAMFG;YUYAMA MFG Co.,Ltd
 8C:1F:64:AD:30;WorkingSetSo;Working Set Software Solutions
 8C:1F:64:AD:30;WorkingSetSo;Working Set Software Solutions
 8C:1F:64:AD:40;FlextronicsI;Flextronics International Kft
 8C:1F:64:AD:40;FlextronicsI;Flextronics International Kft
+8C:1F:64:AD:60;Internationa;International Security Systems W.L.L.
 8C:1F:64:AD:70;Monnit;Monnit Corporation
 8C:1F:64:AD:70;Monnit;Monnit Corporation
 8C:1F:64:AD:80;NovantaIMS;Novanta IMS
 8C:1F:64:AD:80;NovantaIMS;Novanta IMS
 8C:1F:64:AD:B0;HebeiWeijiEl;Hebei Weiji Electric Co.,Ltd
 8C:1F:64:AD:B0;HebeiWeijiEl;Hebei Weiji Electric Co.,Ltd
@@ -41790,6 +41819,7 @@
 8C:1F:64:FF:C0;InvendisTech;Invendis Technologies India Pvt Ltd
 8C:1F:64:FF:C0;InvendisTech;Invendis Technologies India Pvt Ltd
 8C:1F:94;RFSurgicalSy;RF Surgical System Inc.
 8C:1F:94;RFSurgicalSy;RF Surgical System Inc.
 8C:21:0A;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 8C:21:0A;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
+8C:22:D2;HikvisionDig;Hangzhou Hikvision Digital Technology Co.,Ltd.
 8C:25:05;HuaweiTechno;Huawei Technologies Co.,Ltd
 8C:25:05;HuaweiTechno;Huawei Technologies Co.,Ltd
 8C:25:5E;VoltServer;VoltServer
 8C:25:5E;VoltServer;VoltServer
 8C:26:AA;Apple;Apple, Inc.
 8C:26:AA;Apple;Apple, Inc.
@@ -42325,6 +42355,7 @@
 90:20:3A;BYDPrecision;BYD Precision Manufacture Co.,Ltd
 90:20:3A;BYDPrecision;BYD Precision Manufacture Co.,Ltd
 90:20:83;GeneralEngin;General Engine Management Systems Ltd.
 90:20:83;GeneralEngin;General Engine Management Systems Ltd.
 90:20:C2;HewlettPacka;Hewlett Packard Enterprise
 90:20:C2;HewlettPacka;Hewlett Packard Enterprise
+90:20:D7;Microsoft;Microsoft Corporation
 90:21:06;SkyUk;Sky Uk Limited
 90:21:06;SkyUk;Sky Uk Limited
 90:21:2E;ApptionLabs;Apption Labs Ltd
 90:21:2E;ApptionLabs;Apption Labs Ltd
 90:21:55;HTC;HTC Corporation
 90:21:55;HTC;HTC Corporation
@@ -43045,6 +43076,7 @@
 94:A0:7D;HuaweiDevice;Huawei Device Co., Ltd.
 94:A0:7D;HuaweiDevice;Huawei Device Co., Ltd.
 94:A0:81;SiliconLabor;Silicon Laboratories
 94:A0:81;SiliconLabor;Silicon Laboratories
 94:A1:A2;AMPAKTechnol;AMPAK Technology, Inc.
 94:A1:A2;AMPAKTechnol;AMPAK Technology, Inc.
+94:A2:5D;HuaweiTechno;Huawei Technologies Co.,Ltd
 94:A3:CA;KonnectONE;KonnectONE, LLC
 94:A3:CA;KonnectONE;KonnectONE, LLC
 94:A4:08;TrolinkTechn;Shenzhen Trolink Technology CO, LTD
 94:A4:08;TrolinkTechn;Shenzhen Trolink Technology CO, LTD
 94:A4:0C;DiehlMeterin;Diehl Metering GmbH
 94:A4:0C;DiehlMeterin;Diehl Metering GmbH
@@ -43385,6 +43417,7 @@
 98:29:3F;FujianStartC;Fujian Start Computer Equipment Co.,Ltd
 98:29:3F;FujianStartC;Fujian Start Computer Equipment Co.,Ltd
 98:29:A6;CompalInform;Compal Information (Kunshan) Co., Ltd.
 98:29:A6;CompalInform;Compal Information (Kunshan) Co., Ltd.
 98:2A:0A;Intelbras;Intelbras
 98:2A:0A;Intelbras;Intelbras
+98:2A:FD;HuaweiTechno;Huawei Technologies Co.,Ltd
 98:2C:BC;Intel;Intel Corporate
 98:2C:BC;Intel;Intel Corporate
 98:2C:BE;2Wire;2Wire Inc
 98:2C:BE;2Wire;2Wire Inc
 98:2C:C6;SernetTechno;Sernet (Suzhou) Technologies Corporation
 98:2C:C6;SernetTechno;Sernet (Suzhou) Technologies Corporation
@@ -45517,6 +45550,7 @@ A8:6A:6F;Rim;Rim
 A8:6A:86;XiaomiCommun;Xiaomi Communications Co Ltd
 A8:6A:86;XiaomiCommun;Xiaomi Communications Co Ltd
 A8:6A:BB;SagemcomBroa;Sagemcom Broadband SAS
 A8:6A:BB;SagemcomBroa;Sagemcom Broadband SAS
 A8:6A:C1;HanbitEDS;HanbitEDS Co., Ltd.
 A8:6A:C1;HanbitEDS;HanbitEDS Co., Ltd.
+A8:6A:CB;Evar;Evar
 A8:6B:7C;FenglianTech;Shenzhen Fenglian Technology Co., Ltd.
 A8:6B:7C;FenglianTech;Shenzhen Fenglian Technology Co., Ltd.
 A8:6B:AD;HonHaiPrecis;Hon Hai Precision Ind. Co.,Ltd.
 A8:6B:AD;HonHaiPrecis;Hon Hai Precision Ind. Co.,Ltd.
 A8:6D:04;Siemens;Siemens AG
 A8:6D:04;Siemens;Siemens AG
@@ -47069,6 +47103,7 @@ B4:C1:70;YichipMicroe;Yi chip Microelectronics (Hangzhou) Co., Ltd
 B4:C2:6A;GarminIntern;Garmin International
 B4:C2:6A;GarminIntern;Garmin International
 B4:C2:E0;BouffaloLab;Bouffalo Lab (Nanjing) Co., Ltd.
 B4:C2:E0;BouffaloLab;Bouffalo Lab (Nanjing) Co., Ltd.
 B4:C2:F7;HuaweiDevice;Huawei Device Co., Ltd.
 B4:C2:F7;HuaweiDevice;Huawei Device Co., Ltd.
+B4:C3:D9;HuaweiTechno;Huawei Technologies Co.,Ltd
 B4:C4:4E;VXLeTech;VXL eTech Pvt Ltd
 B4:C4:4E;VXLeTech;VXL eTech Pvt Ltd
 B4:C4:76;MaritimeComm;Wuhan Maritime Communication Research Institute
 B4:C4:76;MaritimeComm;Wuhan Maritime Communication Research Institute
 B4:C4:FC;XiaomiCommun;Xiaomi Communications Co Ltd
 B4:C4:FC;XiaomiCommun;Xiaomi Communications Co Ltd
@@ -47458,6 +47493,7 @@ B8:B7:DB;GOIPGlobalSe;GOIP Global Services Pvt. Ltd.
 B8:B7:F1;WNC;WNC Corporation
 B8:B7:F1;WNC;WNC Corporation
 B8:B8:1E;Intel;Intel Corporate
 B8:B8:1E;Intel;Intel Corporate
 B8:B9:4E;iBabyLabs;Shenzhen iBaby Labs, Inc.
 B8:B9:4E;iBabyLabs;Shenzhen iBaby Labs, Inc.
+B8:BA:66;Microsoft;Microsoft Corporation
 B8:BA:68;XianJizhongD;Xi'an Jizhong Digital Communication Co.,Ltd
 B8:BA:68;XianJizhongD;Xi'an Jizhong Digital Communication Co.,Ltd
 B8:BA:72;Cynove;Cynove
 B8:BA:72;Cynove;Cynove
 B8:BB:23;NufrontCSC;Guangdong Nufront CSC Co., Ltd
 B8:BB:23;NufrontCSC;Guangdong Nufront CSC Co., Ltd
@@ -50694,6 +50730,7 @@ D0:F4:F7;HuaweiDevice;Huawei Device Co., Ltd.
 D0:F5:20;KYOCERA;KYOCERA Corporation
 D0:F5:20;KYOCERA;KYOCERA Corporation
 D0:F7:3B;HelmutMauell;Helmut Mauell GmbH Werk Weida
 D0:F7:3B;HelmutMauell;Helmut Mauell GmbH Werk Weida
 D0:F7:6E;YOUHUATechno;Shenzhen YOUHUA Technology Co., Ltd
 D0:F7:6E;YOUHUATechno;Shenzhen YOUHUA Technology Co., Ltd
+D0:F8:15;HuaweiTechno;Huawei Technologies Co.,Ltd
 D0:F8:65;ItelMobile;Itel Mobile Limited
 D0:F8:65;ItelMobile;Itel Mobile Limited
 D0:F8:8C;MotorolaMobi;Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
 D0:F8:8C;MotorolaMobi;Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
 D0:F8:E7;ShutongSpace;Shenzhen Shutong Space Technology Co., Ltd
 D0:F8:E7;ShutongSpace;Shenzhen Shutong Space Technology Co., Ltd
@@ -51331,6 +51368,7 @@ D8:3B:DA;Espressif;Espressif Inc.
 D8:3C:69;TINNOMobileT;Shenzhen TINNO Mobile Technology Corp.
 D8:3C:69;TINNOMobileT;Shenzhen TINNO Mobile Technology Corp.
 D8:3D:3F;JOYNED;JOYNED GmbH
 D8:3D:3F;JOYNED;JOYNED GmbH
 D8:3D:CC;UDDTechnolog;shenzhen UDD Technologies,co.,Ltd
 D8:3D:CC;UDDTechnolog;shenzhen UDD Technologies,co.,Ltd
+D8:3E:EB;AltoBeam;AltoBeam Inc.
 D8:3E:EF;CooseaGroup;Coosea Group (Hk) Company Limited
 D8:3E:EF;CooseaGroup;Coosea Group (Hk) Company Limited
 D8:40:08;HuaweiTechno;Huawei Technologies Co.,Ltd
 D8:40:08;HuaweiTechno;Huawei Technologies Co.,Ltd
 D8:42:AC;FeixunCommun;Shanghai Feixun Communication Co.,Ltd.
 D8:42:AC;FeixunCommun;Shanghai Feixun Communication Co.,Ltd.
@@ -51843,6 +51881,7 @@ DC:56:7B;CloudNetwork;Cloud Network Technology Singapore Pte. Ltd.
 DC:56:E6;BococomTechn;Shenzhen Bococom Technology Co.,LTD
 DC:56:E6;BococomTechn;Shenzhen Bococom Technology Co.,LTD
 DC:56:E7;Apple;Apple, Inc.
 DC:56:E7;Apple;Apple, Inc.
 DC:57:26;PowerOne;Power-One
 DC:57:26;PowerOne;Power-One
+DC:57:5C;PRElectronic;PR Electronics A/S
 DC:58:BC;ThomasKrenn;Thomas-Krenn.AG
 DC:58:BC;ThomasKrenn;Thomas-Krenn.AG
 DC:5E:36;PatersonTech;Paterson Technology
 DC:5E:36;PatersonTech;Paterson Technology
 DC:60:A1;TeledyneDALS;Teledyne DALSA Professional Imaging
 DC:60:A1;TeledyneDALS;Teledyne DALSA Professional Imaging
@@ -52821,6 +52860,7 @@ E4:84:29;NewH3CTechno;New H3C Technologies Co., Ltd
 E4:84:2B;SoftelOptic;Hangzhou Softel Optic Co., Ltd
 E4:84:2B;SoftelOptic;Hangzhou Softel Optic Co., Ltd
 E4:84:D3;XiaomiCommun;Xiaomi Communications Co Ltd
 E4:84:D3;XiaomiCommun;Xiaomi Communications Co Ltd
 E4:85:01;GeberitInter;Geberit International AG
 E4:85:01;GeberitInter;Geberit International AG
+E4:85:FB;QuectelWirel;Quectel Wireless Solutions Co.,Ltd.
 E4:89:CA;Cisco;Cisco Systems, Inc
 E4:89:CA;Cisco;Cisco Systems, Inc
 E4:8A:93;HisenseVisua;Hisense Visual Technology Co.,Ltd
 E4:8A:93;HisenseVisua;Hisense Visual Technology Co.,Ltd
 E4:8A:D5;RfWindow;Rf Window Co., Ltd.
 E4:8A:D5;RfWindow;Rf Window Co., Ltd.
@@ -54830,6 +54870,7 @@ F4:9F:F3;HuaweiTechno;Huawei Technologies Co.,Ltd
 F4:A1:7F;MarquardtEle;Marquardt Electronics Technology (Shanghai) Co.Ltd
 F4:A1:7F;MarquardtEle;Marquardt Electronics Technology (Shanghai) Co.Ltd
 F4:A2:94;EagleWorldDe;Eagle World Development Co., Limited
 F4:A2:94;EagleWorldDe;Eagle World Development Co., Limited
 F4:A3:10;Apple;Apple, Inc.
 F4:A3:10;Apple;Apple, Inc.
+F4:A3:C2;iCommSemicon;Shenzhen iComm Semiconductor CO.,LTD
 F4:A4:54:00;NKTPhotonics;NKT Photonics A/S
 F4:A4:54:00;NKTPhotonics;NKT Photonics A/S
 F4:A4:54:10;PTTelkomIndo;PT Telkom Indonesia
 F4:A4:54:10;PTTelkomIndo;PT Telkom Indonesia
 F4:A4:54:20;TriWorks;Tri Works
 F4:A4:54:20;TriWorks;Tri Works