Network Configuration Using a Configuration Editor
Test Environments
Hardware Comments |
Nut/OS 4.6.4 |
Nut/OS 4.7.4 |
Nut/OS 4.8.0 | |
Ethernut 1.3 H | OK Binaries |
OK Binaries |
OK Binaries | |
Ethernut 2.1 B | OK Binaries |
OK Binaries |
OK Binaries | |
Ethernut 3.0 E | OK Binaries |
OK Binaries |
OK Binaries | |
EIR 1.0 C | Set jumper JP1 to UART mode. | Configuration Error. |
Configuration Error. |
OK Binaries Sometimes ignores key strokes |
Compiler: ARM-GCC 4.2.2 ; AVR-GCC 4.3.0 |
Description
The following application is a simple editor, which allows to modify the network configuration stored in non-volatile memory.
Source Code
<source lang="c">
- include <dev/board.h>
- include <sys/confnet.h>
- include <string.h>
- include <stdint.h>
- include <stdio.h>
- include <io.h>
- include <arpa/inet.h>
- include <netinet/if_ether.h>
/* Reads line from standard input. */ static int EditLine(char *prompt, char *line, int siz) {
int ch; int pos = strlen(line);
printf("%s: %s", prompt, line); for (;;) { ch = getchar(); if (ch == 8) { if (pos) { pos--; printf("\b \b"); } } else if (ch < ' ') { break; } else if (pos + 1 < siz) { putchar(ch); line[pos++] = ch; } else { putchar('\a'); } } line[pos] = 0; putchar('\n');
return 0;
}
/* Editor main routine. */ int main(void) {
u_long baud = 115200; char buf[32]; uint8_t *cp; uint32_t addr; char ch;
/* Assign stdin and stdout to the default UART device. */ NutRegisterDevice(&DEV_UART, 0, 0); freopen(DEV_UART_NAME, "w", stdout); freopen(DEV_UART_NAME, "r", stdin); _ioctl(_fileno(stdout), UART_SETSPEED, &baud); puts("Network Configuration Editor");
for (;;) { /* Load configuration. */ if (NutNetLoadConfig(DEV_ETHER_NAME)) { puts("\nNo configuration available"); memcpy(confnet.cd_name, DEV_ETHER_NAME, sizeof(confnet.cd_name)); } else { puts("\nConfiguration loaded"); }
/* Edit MAC address. */ do { strcpy(buf, ether_ntoa(confnet.cdn_mac)); EditLine("MAC Address", buf, 18); cp = ether_aton(buf); } while (cp == NULL); memcpy(confnet.cdn_mac, cp, 6);
/* Edit IP address. */ do { strcpy(buf, inet_ntoa(confnet.cdn_cip_addr)); EditLine("IP Address", buf, 16); addr = inet_addr(buf); } while (addr == -1); confnet.cdn_cip_addr = addr;
/* Edit IP mask. */ do { strcpy(buf, inet_ntoa(confnet.cdn_ip_mask)); EditLine("IP Mask", buf, 16); addr = inet_addr(buf); } while (addr == -1); confnet.cdn_ip_mask = addr;
/* Edit IP gate. */ do { strcpy(buf, inet_ntoa(confnet.cdn_gateway)); EditLine("IP Gate", buf, 16); addr = inet_addr(buf); } while (addr == -1); confnet.cdn_gateway = addr;
/* Prompt for saving. */ printf("\nPress S to save this configuration ");
/* Flush input buffer and read next character. */ while (kbhit()) { ch = getchar(); } ch = getchar();
/* Save or discard edited configuration. */ if (ch == 's' || ch == 'S') { if (NutNetSaveConfig()) { puts("Failed"); } else { puts("Saved"); } } else { puts("Discarded"); } } return 0;
} </source>
Output
Network Configuration Editor Configuration loaded MAC Address: 00:06:98:30:02:76 IP Address: 192.168.192.111 IP Mask: 255.255.255.0 IP Mask: 0.0.0.0 Press S to save this configuration Saved
Now you can try it out by executing Network Configuration Using Stored Configuration.
See also
- Network Configuration Overview
- Basic TCP Server
- Basic TCP Client
- More Nut/OS Examples
External Links
MAC address A Media Access Control address (MAC address) is a unique identifier assigned to network adapters for identification.
IP address A numerical identification that is assigned to devices participating in a computer network utilizing the Internet Protocol.
Dynamic Host Configuration Protocol A protocol used by networked devices to obtain the parameters necessary for operation in an Internet Protocol network.Template:Languages