/* * Main program. * Write a wtmp entry and reboot cq. halt. */ int main(int argc, char **argv) { int do_sync = 1; int do_hard = 0; int do_ifdown = 0; int c; /* * Get flags */ while((c = getopt(argc, argv, ":ifn:")) != EOF) { switch(c) { case 'n': do_sync = 0; break; case 'f': do_hard = 1; break; case 'i': do_ifdown = 1; break; default: usage(); } } if (argc == optind) usage(); if (geteuid() != 0) { fprintf(stderr, "%s: must be superuser.\n", progname); exit(1); } (void)chdir("/"); if (!do_hard ) { /* * See if we are in runlevel 0 or 6. */ c = get_runlevel(); if (c != '0' && c != '6') do_shutdown(argv[optind]); } if (do_sync) { sync(); sleep(2); } if (do_ifdown) (void)ifdown(); (void)hdflush(); syscall(SYS_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, argv[optind]); return 0; }
int main(int argc, char **argv) { int fd; uint8_t msg[2048]; ssize_t msg_size; struct ipv6_mreq mreq; struct sockaddr_in6 addr; const int zero = 0; if (!ifup()) return 1; fd = socket(AF_INET6, SOCK_DGRAM, 0); if (fd < 0) { perror("socket"); return 1; } memset(&addr, 0, sizeof(addr)); addr.sin6_family = AF_INET6; addr.sin6_addr = in6addr_any; addr.sin6_port = htons(NETKEYSCRIPT_PORT); if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { perror("bind"); return 1; } memset(&mreq, 0, sizeof(mreq)); if (!inet_pton(AF_INET6, "ff02::1", &mreq.ipv6mr_multiaddr)) { perror("inet_pton"); return 1; } if (setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0) { perror("setsockopt"); return 1; } if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &zero, sizeof(zero))) { perror("setsockopt"); return 1; } fputs("netkeyscript: waiting for passphrase\n", stderr); msg_size = read_passphrase(fd, msg, sizeof(msg)); if (msg_size < 0) { return 1; } /* +1/-1 to skip the command prefix code */ if (fwrite(msg+1, msg_size-1, 1, stdout) < 1) { fputs("fwrite: error\n", stderr); return 1; } ifdown(); return 0; }
int StopTap(int sock, char* name) { if(ifdown(name) != 0) { printf("Failed to bring down interface %s\n", name); return -1; } if(tun_dealloc(sock) != 0) { printf("Failed to dealloc tap %s\n", name); return -1; } return 0; }
int DeleteBridge(char* bridge) { int sock = -1; int br = -1; /* if it doesn't exist then its deleted! */ if(CheckBridge(bridge) < 0) { return 0; } sock = socket(AF_LOCAL, SOCK_STREAM, 0); if(sock <= 0) { return -1; } if(ifdown(bridge) != 0) { return -1; } br = ioctl(sock, SIOCBRDELBR, bridge); close(sock); return br < 0 ? -1 : 0; }
int main(int argc, char *argv[]) { int do_load = 1; int do_exec = 0; int do_shutdown = 1; int do_sync = 1; int do_ifdown = 0; int do_unload = 0; int do_reuse_initrd = 0; unsigned long kexec_flags = 0; char *type = 0; char *endptr; int opt; int result = 0; int fileind; static const struct option options[] = { KEXEC_ARCH_OPTIONS { 0, 0, 0, 0}, }; static const char short_options[] = KEXEC_OPT_STR; opterr = 0; /* Don't complain about unrecognized options here */ while ((opt = getopt_long(argc, argv, short_options, options, 0)) != -1) { switch(opt) { case OPT_HELP: usage(); return 0; case OPT_VERSION: version(); return 0; case OPT_NOIFDOWN: do_ifdown = 0; break; case OPT_FORCE: do_load = 1; do_shutdown = 0; do_sync = 1; do_ifdown = 1; do_exec = 1; break; case OPT_LOAD: do_load = 1; do_exec = 0; do_shutdown = 0; break; case OPT_UNLOAD: do_load = 0; do_shutdown = 0; do_sync = 0; do_unload = 1; break; case OPT_EXEC: do_load = 0; do_shutdown = 0; do_sync = 1; do_ifdown = 1; do_exec = 1; break; case OPT_TYPE: type = optarg; break; case OPT_PANIC: do_load = 1; do_exec = 0; do_shutdown = 0; do_sync = 0; kexec_flags = KEXEC_ON_CRASH; break; case OPT_MEM_MIN: mem_min = strtoul(optarg, &endptr, 0); if (*endptr) { fprintf(stderr, "Bad option value in --mem-min=%s\n", optarg); usage(); return 1; } break; case OPT_MEM_MAX: mem_max = strtoul(optarg, &endptr, 0); if (*endptr) { fprintf(stderr, "Bad option value in --mem-max=%s\n", optarg); usage(); return 1; } break; case OPT_REUSE_INITRD: do_reuse_initrd = 1; break; default: break; } } if ((kexec_flags & KEXEC_ON_CRASH) && !is_crashkernel_mem_reserved()) { printf("Memory for crashkernel is not reserved\n"); printf("Please reserve memory by passing "); printf("\"crashkernel=X@Y\" parameter to the kernel\n"); die("Then try loading kdump kernel\n"); } fileind = optind; /* Reset getopt for the next pass; called in other source modules */ opterr = 1; optind = 1; result = arch_process_options(argc, argv); /* Check for bogus options */ if (!do_load) { while((opt = getopt_long(argc, argv, short_options, options, 0)) != -1) { if ((opt == '?') || (opt >= OPT_ARCH_MAX)) { usage(); return 1; } } } if (do_reuse_initrd){ check_reuse_initrd(); arch_reuse_initrd(); } if (do_unload) { result = k_unload(kexec_flags); } if (do_load && (result == 0)) { result = my_load(type, fileind, argc, argv, kexec_flags); } /* Don't shutdown unless there is something to reboot to! */ if ((result == 0) && (do_shutdown || do_exec) && !kexec_loaded()) { die("Nothing has been loaded!\n"); } if ((result == 0) && do_shutdown) { result = my_shutdown(); } if ((result == 0) && do_sync) { sync(); } if ((result == 0) && do_ifdown) { extern int ifdown(void); (void)ifdown(); } if ((result == 0) && do_exec) { result = my_exec(); } fflush(stdout); fflush(stderr); return result; }
/**************************************************************************** main Print out a menu, wait for keypresses, while calling tcp_tick. ****************************************************************************/ void main(void) { int val0, val1,i, level; mac_addr mac; char c; word waitms, pingit; longword pingid; wifi_status status; int len; int printmenu; unsigned long int end; // Initialize the scan_complete variable scan_complete = 0; sock_init(); waitms = _SET_SHORT_TIMEOUT(300); pingit = 0; printmenu = 1; for (;;) { if (printmenu) { printmenu = 0; printf("\nMenu:\n"); printf(" Press s to scan available access points\n"); printf(" Press a to scan access points and associate\n"); printf(" Press m to print WIFI MAC status\n"); printf("\n"); } tcp_tick(NULL); if (kbhit()) { switch (getchar()) { case 'm': case 'M': ifconfig (IF_WIFI0, IFG_WIFI_STATUS, &status, IFS_END); print_status(&status); printmenu = 1; break; case 's': case 'S': // Bring the interface down before starting a scan ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) tcp_tick(NULL); // Set the callback before requesting scan ifconfig(IF_WIFI0, IFS_WIFI_SCAN, scan_callback, IFS_END); printf("Starting scan...\n"); break; case 'a': case 'A': // Bring the interface down before starting a scan ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) tcp_tick(NULL); ifconfig(IF_WIFI0, IFS_WIFI_SCAN, scan_assoc_callback, IFS_END); printf("Starting scan...\n"); break; } } // Check to see if a scan has completed. If so, then bring the // interface back up. if (scan_complete) { ifup(IF_WIFI0); scan_complete = 0; printmenu = 1; } } }
main() { int state; word tmo; brdInit(); //initialize board for this demo // Bring up interface first time (also prints our address) sock_init_or_exit(1); // First initialization OK, turn on both LEDs if_led(LEDON); xcvr_led(LEDON); state = 0; tmo = _SET_SHORT_TIMEOUT(UPTIME); for(;;) { switch (state) { case 0: // Up, timing out tcp_tick(NULL); if (_CHK_SHORT_TIMEOUT(tmo)) { printf("Bringing interface down...\n"); state = 1; ifdown(IF_WIFI0); } break; case 1: // bringing down tcp_tick(NULL); if (ifpending(IF_WIFI0) == IF_DOWN) { printf("Powering down...\n"); if_led(LEDOFF); xcvr_led(LEDOFF); // Set flag for MAC to power down when tcp_tick function is called! pd_powerdown(IF_WIFI0); tmo =_SET_SHORT_TIMEOUT(DOWNTIME); state = 2; } break; case 2: // down, waiting tcp_tick(NULL); if (_CHK_SHORT_TIMEOUT(tmo)) { printf("Powering up...\n"); // Set flag for MAC to power-up when tcp_tick function is called! pd_powerup(IF_WIFI0); xcvr_led(LEDON); tmo =_SET_SHORT_TIMEOUT(500); // settle for 1/2 sec state = 3; } break; case 3: // let power stabilize tcp_tick(NULL); if (_CHK_SHORT_TIMEOUT(tmo)) { printf("Bringing interface up...\n"); ifup(IF_WIFI0); state = 4; } break; case 4: // waiting for up tcp_tick(NULL); if (ifpending(IF_WIFI0) != IF_COMING_UP) { if (ifpending(IF_WIFI0) == IF_DOWN) { printf("!!!!! Failed to come back up!!!!!\n"); return -1; } printf("Up again!\n"); if_led(LEDON); tmo =_SET_SHORT_TIMEOUT(UPTIME); state = 0; } break; } } }
main() { longword seq,ping_who,tmp_seq,time_out; char buffer[100]; auto wifi_region region_info; auto char index[10]; auto int option; auto char tmpbuf[64]; auto int updateRegion; auto int country; auto int configured; brdInit(); //initialize board for this demo seq=0; sock_init(); // Initial wifi interface // Make sure wifi IF is down to do ifconfig's functions printf("\nBringing interface down (disassociate)...\n"); ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) { printf("."); tcp_tick(NULL); } printf("...Done.\n"); configured = FALSE; updateRegion = FALSE; do { country = get_stored_region(®ion_info); // Check if the region has been previously set. if(country < 0 || updateRegion) { // Populate structure with region info, then display ifconfig (IF_WIFI0, IFG_WIFI_REGION_INFO, ®ion_info, IFS_END); printf("\nCurrent region setting:\n"); display_info(®ion_info); // Select Region and write value to userblock country = wifi_config_region(®ion_info); updateRegion = FALSE; } else { // Set Region from previously saved value read from the userblock, this // will set the runtime limits to be used by the wifi driver. ifconfig (IF_WIFI0, IFS_WIFI_REGION, country, IFG_WIFI_REGION_INFO, ®ion_info, IFS_END); printf("\nRuntime region setting now being used by wifi driver:\n"); display_info(®ion_info); // Region has already been set at runtime, check if it needs to // be changed due to country to country roaming. printf("\nRegion already set, select option to continue"); printf("\n1. Continue."); printf("\n2. Select new region."); printf("\nSelect > "); do { option = atoi(gets(tmpbuf)); } while (!((option >= 1) && (option <= 2))); if(option == 2) updateRegion = TRUE; else configured = TRUE; } }while(!configured); // If you are not going to use the defaulted channel and/or power level, // then you can use the following functions to set channel and/or the // power level. This needs to be done after setting the region/country // to meet wifi driver requirements. //ifconfig (IF_WIFI0, IFS_WIFI_CHANNEL, 0, IFS_END); // Scan all channels //ifconfig (IF_WIFI0, IFS_WIFI_TX_POWER, 8, IFS_END); // Set to Pwr level 8 // Startup the wireless interface here... printf("Bringing interface back up (associate)...\n"); ifup(IF_WIFI0); while (ifpending(IF_WIFI0) == IF_COMING_UP) { tcp_tick(NULL); } printf("...Done.\n"); if (ifpending(IF_WIFI0) != IF_UP) { printf("Unfortunately, it failed to associate :-(\n"); exit(1); } // End of regional setting section, from this point on do standard tcp/ip // protocol. /* // Here is where we gather the statistics... // Note that if you get a compile error here, it is because you are not running // this sample on a Wifi-equipped board. /* Print who we are... */ printf( "My IP address is %s\n\n", inet_ntoa(buffer, gethostid()) ); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); _ping(ping_who,seq++); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { #ifdef VERBOSE printf("received ping: %ld\n", tmp_seq); #endif pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); } } } }
main() { longword seq,ping_who,tmp_seq,time_out; char buffer[100]; brdInit(); //initialize board for this demo seq=0; sock_init(); // Initialize wifi interface // Make sure wifi IF is down to do ifconfig's functions printf("\nBringing interface down (disassociate)...\n"); ifdown(IF_WIFI0); while (ifpending(IF_WIFI0) != IF_DOWN) { printf("."); tcp_tick(NULL); } printf("...Done.\n"); // Enable 802.11d country information capability // Note: Access Point must have 802.11d enabled with proper country selected ifconfig(IF_WIFI0, IFS_WIFI_MULTI_DOMAIN, 1, IFS_END); // Startup the wireless interface here... printf("Bringing interface back up (associate)...\n"); ifup(IF_WIFI0); while (ifpending(IF_WIFI0) == IF_COMING_UP) { tcp_tick(NULL); } printf("...Done.\n"); if (ifpending(IF_WIFI0) != IF_UP) { printf("Unfortunately, it failed to associate :-(\n"); exit(1); } // End of regional setting section, from this point on do standard tcp/ip // protocol. /* // Here is where we gather the statistics... // Note that if you get a compile error here, it is because you are not running // this sample on a Wifi-equipped board. /* Print who we are... */ printf( "My IP address is %s\n\n", inet_ntoa(buffer, gethostid()) ); /* * Get the binary ip address for the target of our * pinging. */ #ifdef PING_WHO /* Ping a specific IP addr: */ ping_who=resolve(PING_WHO); if(ping_who==0) { printf("ERROR: unable to resolve %s\n",PING_WHO); exit(2); } #else /* Examine our configuration, and ping the default router: */ tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END ); if( tmp_seq != 0 ) { printf( "ERROR: ifconfig() failed --> %d\n", (int) tmp_seq ); exit(2); } if(ping_who==0) { printf("ERROR: unable to resolve IFG_ROUTER_DEFAULT\n"); exit(2); } #endif for(;;) { /* * It is important to call tcp_tick here because * ping packets will not get processed otherwise. * */ tcp_tick(NULL); /* * Send one ping every PING_DELAY ms. */ costate { waitfor(DelayMs(PING_DELAY)); pingoutled(LEDON); // flash transmit LED waitfor(DelayMs(50)); pingoutled(LEDOFF); _ping(ping_who,seq++); } /* * Has a ping come in? time_out!=0xfffffff->yes. */ costate { time_out=_chk_ping(ping_who,&tmp_seq); if(time_out!=0xffffffff) { #ifdef VERBOSE printf("received ping: %ld\n", tmp_seq); #endif pinginled(LEDON); // flash receive LED waitfor(DelayMs(50)); pinginled(LEDOFF); #if RCM5600W_SERIES waitfor(DelayMs(250)); pinginled(LEDON); // flash receive LED again waitfor(DelayMs(50)); pinginled(LEDOFF); #endif } } } }