28 #ifdef GSC_COMP_ENABLE_FATFS 34 #include "lwip/etharp.h" 35 #include "lwip/tcpip.h" 36 #include "lwip/dhcp.h" 37 #include "lwip/netifapi.h" 38 #include "lwip/netdb.h" 45 extern struct netif netif;
48 static int arp(
int argc,
uchar *argv[]);
57 .manual_str =
"Display ARP tables",
60 static int arp(
int argc,
uchar *argv[])
64 tprintf(
"Address HW Address\n");
65 tprintf(
"--------------- -----------------\n");
66 for(i=0; i<ARP_TABLE_SIZE; i++) {
69 struct eth_addr *ethaddr;
71 if(etharp_get_entry(i, &ip, &nif, ðaddr) != 0) {
72 tprintf(
"%15s", ip4addr_ntoa(ip));
73 tprintf(
" %02X:%02X:%02X:%02X:%02X:%02X\n",
74 (
int)ethaddr->addr[0],
75 (
int)ethaddr->addr[1],
76 (
int)ethaddr->addr[2],
77 (
int)ethaddr->addr[3],
78 (
int)ethaddr->addr[4],
79 (
int)ethaddr->addr[5]);
87 static int ip(
int argc,
uchar *argv[]);
95 .usage_str =
"[ip_address] [mask <mask_address>] [gw <gw_address>]",
96 .manual_str =
"Set network address",
99 static int ip(
int argc,
uchar *argv[])
101 const ip4_addr_t *addr;
102 ip4_addr_t ipaddr = {.addr = 0}, netmask = {.addr = 0}, gateway = {.addr = 0};
104 tprintf(
"MAC Address : %02X:%02X:%02X:%02X:%02X:%02X\n",
133 addr = netif_ip4_addr(&netif);
134 tprintf(
"IP Address : %s\n", ip4addr_ntoa(addr));
135 addr = netif_ip4_netmask(&netif);
136 tprintf(
"Netmask : %s\n", ip4addr_ntoa(addr));
137 addr = netif_ip4_gw(&netif);
138 tprintf(
"Gateway : %s\n", ip4addr_ntoa(addr));
141 }
else if(argc == 2) {
142 if(ip4addr_aton((
char *)argv[1], &ipaddr) == 0) {
145 }
else if((argc == 4) || (argc == 6)) {
148 if(ip4addr_aton((
char *)argv[1], &ipaddr) == 0) {
156 for(i=0; i<opt; i++) {
158 if(ip4addr_aton((
char *)argv[3+i*2], &netmask) == 0) {
162 if(ip4addr_aton((
char *)argv[3+i*2], &gateway) == 0) {
172 if(ipaddr.addr != 0) {
173 tprintf(
"IP = %s\n", ip4addr_ntoa(&ipaddr));
175 addr = netif_ip4_addr(&netif);
178 if(netmask.addr != 0) {
179 tprintf(
"MASK = %s\n", ip4addr_ntoa(&netmask));
181 addr = netif_ip4_addr(&netif);
184 if(gateway.addr != 0) {
185 tprintf(
"GW = %s\n", ip4addr_ntoa(&gateway));
187 addr = netif_ip4_addr(&netif);
192 netif_set_addr(&netif, &ipaddr, &netmask, &gateway);
197 print_command_usage(&com_net_ip);
202 static int dhcp(
int argc,
uchar *argv[]);
210 .usage_str =
"[ip_address]",
211 .manual_str =
"Start DHCP client",
214 static int dhcp(
int argc,
uchar *argv[])
228 static int up(
int argc,
uchar *argv[]);
236 .manual_str =
"Link up network",
239 static int up(
int argc,
uchar *argv[])
247 static int down(
int argc,
uchar *argv[]);
255 .manual_str =
"Link down network",
258 static int down(
int argc,
uchar *argv[])
266 static int dns(
int argc,
uchar *argv[]);
274 .usage_str =
"[[dns_ip_address] dns_ip_address2]",
275 .manual_str =
"Set DNS address",
278 static int dns(
int argc,
uchar *argv[])
280 const ip_addr_t *addr;
286 if(ipaddr_aton((
char *)argv[1], &dnsaddr) == 0) {
289 dns_setserver(0, &dnsaddr);
291 if(ipaddr_aton((
char *)argv[2], &dnsaddr) == 0) {
294 dns_setserver(1, &dnsaddr);
298 for(i=0; i<DNS_MAX_SERVERS; i++) {
299 addr = dns_getserver(i);
300 ipstr = ip4addr_ntoa(addr);
307 print_command_usage(&com_net_dns);
313 #ifndef GSC_TARGET_SYSTEM_EMU 314 static int httpget(
int argc,
uchar *argv[]);
322 #ifdef GSC_COMP_ENABLE_FATFS 323 .usage_str =
"<URL> [file]",
325 .usage_str =
"<URL>",
327 .manual_str =
"get from URL",
332 static int httpget(
int argc,
uchar *argv[])
335 struct addrinfo *ainfo = 0;
337 char send_buf[MAX_BUF + 1];
338 uchar url[MAX_BUF + 1] = {0};
339 uchar path[MAX_BUF + 1] = {0};
345 print_command_usage(&com_net_httpget);
349 #ifdef GSC_COMP_ENABLE_FATFS 353 tprintf(
"Cannot open file \"%s\"\n", argv[2]);
371 tprintf(
"FILE : %s\n", argv[2]);
374 rtn = lwip_getaddrinfo((
const char *)url,
"80", 0, &ainfo);
377 struct sockaddr_in *addr = (
struct sockaddr_in *)ainfo->ai_addr;
378 tprintf(
"%s %d\n", ainfo->ai_canonname, rtn);
379 tprintf(
"%s\n", inet_ntoa(addr->sin_addr));
380 tprintf(
"%d %d %d\n", ainfo->ai_family, ainfo->ai_socktype, ainfo->ai_protocol);
386 sock = lwip_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
388 tprintf(
"lwip_socket error %d\n", sock);
389 lwip_freeaddrinfo(ainfo);
393 rtn = lwip_connect(sock, ainfo->ai_addr, ainfo->ai_addrlen);
395 tprintf(
"lwip_connect error %d\n", rtn);
396 lwip_freeaddrinfo(ainfo);
400 tsnprintf(send_buf, MAX_BUF,
"GET /%s HTTP/1.1\r\n", path);
401 DTPRINTF(0x04, send_buf);
402 lwip_write(sock, send_buf,
strleng((
const uchar *)send_buf));
404 tsnprintf(send_buf, MAX_BUF,
"Host: localhost\r\n");
405 DTPRINTF(0x04, send_buf);
406 lwip_write(sock, send_buf,
strleng((
const uchar *)send_buf));
409 DTPRINTF(0x04, send_buf);
410 lwip_write(sock, send_buf,
strleng((
const uchar *)send_buf));
413 char buf[MAX_BUF + 1];
418 if(rd == ASCII_CTRL_C) {
424 read_size = lwip_read(sock, buf, MAX_BUF);
428 #ifdef GSC_COMP_ENABLE_FATFS 431 if(rt != read_size) {
432 tprintf(
"File write error(%d)\n", rt);
446 #ifdef GSC_COMP_ENABLE_FATFS 455 lwip_freeaddrinfo(ainfo);
459 #endif // GSC_TARGET_SYSTEM_EMU 469 #ifndef GSC_TARGET_SYSTEM_EMU 477 .manual_str =
"Network operation commands",
478 .sublist = com_net_list
unsigned char uchar
GadgetSeedの文字(列)は unsigned char 型となる
static const struct st_shell_command com_net_ip
IPアドレス、ネットマスク、デフォルトゲートウェイを設定する
static const struct st_shell_command com_net_dns
DNSサーバアドレスを設定する
#define IORTN_BIT_ETHER_LINK_UP
リンクアップ状態
int cgetcnw(unsigned char *rd)
標準入力より1文字を取得する(待ち無し)
t_ssize write_file(int fd, const void *buf, t_size count)
ファイルにデータを書き込む
int close_file(int fd)
ファイルを閉じる
static const struct st_shell_command com_net_dhcp
DHCPによりIPアドレス、ネットマスク、デフォルトゲートウェイを設定する
static const struct st_shell_command com_net_down
ネットワークインタフェースをリンクダウンする
uchar * strchar(const uchar *str, uchar ch)
文字を検索
static const struct st_shell_command com_net_arp
ARPテーブルを表示する
int strcomp(const uchar *s1, const uchar *s2)
文字列比較
int open_file(const uchar *path, int flags)
ファイルを開く
#define IORTN_BIT_ETHER_FULLDUPLEX
全二重状態
unsigned int strleng(const uchar *str)
文字列長
static const struct st_shell_command com_net_up
ネットワークインタフェースをリンクアップする
int tprintf(const char *fmt,...)
簡易printf
#define IORTN_BIT_ETHER_100M
通信速度100Mbps
uchar * strncopy(uchar *dest, const uchar *src, unsigned int n)
文字列コピー
static const struct st_shell_command com_net_httpget
指定したURLを表示、またはファイル保存する。
int tsnprintf(char *str, unsigned int size, const char *fmt,...)
簡易snprintf