Network Configuration Using a Configuration Editor
From NutWiki
Contents |
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
#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; }
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.
| Languages: |
English |
