20191230_jeffrey - silenceuncrio/diary GitHub Wiki
review
M300 被 planet 反應說 setting wizard 在每一次的 login 後都會跳出來很煩
希望有個選項可以把 setting wizard 關掉
M300[release/v2.02]
- Products/Vendor = M300/0_GENERIC
我應該開一個 wiki 來整理一下目前 setting wizard 的狀況
先把自己想要的 implement 方式整理在 wiki 上
m330[release/v0.08] 有 web ui 的需求
- Vendor/Products = PI/0_PI_WIFI
m330[release/v0.08] - trigger wifi_apsta.cgi?act=status&index=0 at the beginning while 'WiFi > Client' List page opened
commit 0a7e5eea0604f26cbdb3bbba9a5274c5e5fde88e
Refs: [release/v0.08], {origin/release/v0.08}
Author: jeffrey <[email protected]>
Date: Mon Dec 30 14:12:39 2019 +0800
trigger wifi_apsta.cgi?act=status&index=0 at the beginning while 'WiFi > Client' List page opened
- trigger the status while user click each nav - just like the 'Refresh' button
proscend/prosrc/www/app/feature/wifi_info.html | 4 ++--
proscend/prosrc/www/app/feature/wifi_info.js | 20 ++++++++++++++++++++
2 files changed, 22 insertions(+), 2 deletions(-)
M300[release/v2.02] - at WAN > Priority, if apply with 'WAN Priority' changed, remind the user to reboot to take effect
commit cbb1221927d63b7a86e548ce08a215188b10e478
Refs: [release/v2.02], {origin/release/v2.02}
Author: jeffrey <[email protected]>
Date: Mon Dec 30 14:38:42 2019 +0800
at WAN > Priority, if apply with 'WAN Priority' changed, remind the user to reboot to take effect
proscend/prosrc/www/app/feature/wanPriority.js | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
利用最新的 m330[release/v0.08]
- Vendor/Products = PI/0_PI_WIFI
準備好以下環境
+-------+ +-------+
| | lan | |
| m330 +-------------------------------------------+ m330 |
| | 192.168.1.11 192.168.1.13 | |
+-------+ +-------+
參考 The Linux Programming Interface - Chapter 59: Sockets: Internet Domains
gre_keepalive_20.h
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ctype.h>
#define BUF_SIZE 10 /* Maximum size of messages exchanged
between client and server */
#define PORT_NUM 50002 /* Server port number */
gre_keepalive_20_sv.c
#include "gre_keepalive_20.h"
int
main(int argc, char *argv[])
{
struct sockaddr_in6 svaddr, claddr;
int sfd, j;
ssize_t numBytes;
socklen_t len;
char buf[BUF_SIZE];
char claddrStr[INET6_ADDRSTRLEN];
sfd = socket(AF_INET6, SOCK_DGRAM, 0);
if (sfd == -1)
{
printf("socket");
exit(1);
}
memset(&svaddr, 0, sizeof(struct sockaddr_in6));
svaddr.sin6_family = AF_INET6;
svaddr.sin6_addr = in6addr_any; /* Wildcard address */
svaddr.sin6_port = htons(PORT_NUM);
if (bind(sfd, (struct sockaddr *) &svaddr,
sizeof(struct sockaddr_in6)) == -1)
{
printf("bind");
exit(1);
}
/* Receive messages, convert to uppercase, and return to client */
for (;;) {
len = sizeof(struct sockaddr_in6);
numBytes = recvfrom(sfd, buf, BUF_SIZE, 0,
(struct sockaddr *) &claddr, &len);
if (numBytes == -1)
{
printf("recvfrom");
exit(1);
}
if (inet_ntop(AF_INET6, &claddr.sin6_addr, claddrStr,
INET6_ADDRSTRLEN) == NULL)
printf("Couldn't convert client address to string\n");
else
printf("Server received %ld bytes from (%s, %u)\n",
(long) numBytes, claddrStr, ntohs(claddr.sin6_port));
for (j = 0; j < numBytes; j++)
buf[j] = toupper((unsigned char) buf[j]);
if (sendto(sfd, buf, numBytes, 0, (struct sockaddr *) &claddr, len) !=
numBytes)
{
printf("sendto");
exit(1);
}
}
}
gre_keepalive_20_cl.c
#include "gre_keepalive_20.h"
int
main(int argc, char *argv[])
{
struct sockaddr_in6 svaddr;
int sfd, j;
size_t msgLen;
ssize_t numBytes;
char resp[BUF_SIZE];
if (argc < 3 || strcmp(argv[1], "--help") == 0)
{
printf("%s host-address msg...\n", argv[0]);
exit(1);
}
sfd = socket(AF_INET6, SOCK_DGRAM, 0); /* Create client socket */
if (sfd == -1)
{
printf("socket");
exit(1);
}
memset(&svaddr, 0, sizeof(struct sockaddr_in6));
svaddr.sin6_family = AF_INET6;
svaddr.sin6_port = htons(PORT_NUM);
if (inet_pton(AF_INET6, argv[1], &svaddr.sin6_addr) <= 0)
{
printf("inet_pton failed for address '%s'", argv[1]);
exit(1);
}
/* Send messages to server; echo responses on stdout */
for (j = 2; j < argc; j++) {
msgLen = strlen(argv[j]);
if (sendto(sfd, argv[j], msgLen, 0, (struct sockaddr *) &svaddr,
sizeof(struct sockaddr_in6)) != msgLen)
{
printf("sendto");
exit(1);
}
numBytes = recvfrom(sfd, resp, BUF_SIZE, 0, NULL, NULL);
if (numBytes == -1)
{
printf("recvfrom");
exit(1);
}
printf("Response %d: %.*s\n", j - 1, (int) numBytes, resp);
}
return 0;
}
測試結果
root@(none):/tmp# ./grek_20_sv &
root@(none):/tmp# ./grek_20_cl ::1 hello
Server received 5 bytes from (::1, 46385)
Response 1: HELLO
耐著性子好好的理解每一個細節