Changeset 27545fca in rtems


Ignore:
Timestamp:
Oct 30, 2013, 3:33:35 PM (6 years ago)
Author:
Ralf Kirchner <ralf.kirchner@…>
Branches:
4.11, master
Children:
17864a4
Parents:
4d3e9334
git-author:
Ralf Kirchner <ralf.kirchner@…> (10/30/13 15:33:35)
git-committer:
Sebastian Huber <sebastian.huber@…> (03/13/14 15:10:52)
Message:

network: Add help text for ifconfig

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libmisc/shell/main_ifconfig.c

    r4d3e9334 r27545fca  
    2727#include <rtems/shell.h>
    2828#include "internal.h"
     29
     30
     31static const char IFCONFIG_USAGE[] =
     32  "ifconfig [iface]\n"
     33  "ifconfig iface options | addr\n"
     34  "  iface: name of the interface\n"
     35  "  options: iface \n"
     36  "   up: bring the interface up\n"
     37  "   down: take the interface down\n"
     38  "   netmask addr: network mask\n"
     39  "   broadcast addr: boardcast address\n"
     40  "   pointopoint addr: destination address for a PTP link\n"
     41  "\n"
     42  "  addr: IP address";
     43
    2944
    3045static int rtems_shell_main_ifconfig(
     
    3752  struct sockaddr_in  netmask;
    3853  struct sockaddr_in  broadcast;
    39   char               *iface;
     54  char               *iface       = NULL;
    4055  int                 f_ip        = 0;
    4156  int                 f_ptp       = 0;
     
    4459  int                 f_down      = 0;
    4560  int                 f_bcast     = 0;
     61  int                 f_usage      = 0;
    4662  int                 cur_idx;
    4763  int                 rc;
     
    7187    cur_idx += 1;
    7288  } else {
    73     iface = argv[1];
    74     if (isdigit((unsigned char)*argv[2])) {
    75       if (inet_pton(AF_INET, argv[2], &ipaddr.sin_addr) < 0) {
    76         printf("bad ip address: %s\n", argv[2]);
    77         return 0;
    78       }
    79       f_ip = 1;
    80       cur_idx += 3;
     89    if ( 0 == strcmp( "--help", argv[1] ) ) {
     90      f_usage = 1;
     91      cur_idx += 2;
     92    } else if ( 0 == strcmp( "-help", argv[1] ) ) {
     93      f_usage = 1;
     94      cur_idx += 2;
    8195    } else {
    82       cur_idx += 2;
     96      iface = argv[1];
     97      if ( argc >= 3 ) {
     98        if (isdigit((unsigned char)*argv[2])) {
     99          if (inet_pton(AF_INET, argv[2], &ipaddr.sin_addr) < 0) {
     100            printf("bad ip address: %s\n", argv[2]);
     101            return 0;
     102          }
     103          f_ip = 1;
     104          cur_idx += 3;
     105        } else {
     106          cur_idx += 2;
     107        }
     108      } else {
     109        cur_idx += 2;
     110      }
    83111    }
    84112  }
     
    93121      if (f_down != 0) {
    94122        printf("Can't make interface up and down\n");
     123        return -1;
    95124      }
    96125    } else if(strcmp(argv[cur_idx], "down") == 0) {
     
    98127      if (f_up != 0) {
    99128        printf("Can't make interface up and down\n");
    100         }
     129        return -1;
     130      }
    101131    } else if(strcmp(argv[cur_idx], "netmask") == 0) {
    102132      if ((cur_idx + 1) >= argc) {
     
    170200    } else if (f_down != 0) {
    171201      printf("down\n");
    172     } else {
     202    }  else {
    173203      printf("\n");
    174204    }
    175   }
    176 
    177   if ((iface == NULL) || ((f_ip == 0) && (f_down == 0) && (f_up == 0))) {
    178     rtems_bsdnet_show_if_stats();
    179     return 0;
     205  } else if (f_usage != 0) {
     206      printf ( "\n" );
     207      printf ( IFCONFIG_USAGE );
     208  }
     209
     210  if ( ! f_usage ) {
     211    if ((iface == NULL) || ((f_ip == 0) && (f_down == 0) && (f_up == 0))) {
     212      rtems_bsdnet_show_if_stats();
     213      return 0;
     214    }
    180215  }
    181216
     
    219254  }
    220255
    221   rc = rtems_bsdnet_ifconfig(iface, SIOCSIFFLAGS, &flags);
    222   if (rc < 0) {
    223     printf("Could not set interface flags: %s\n", strerror(errno));
    224     return -1;
     256  if ( ! f_usage ) {
     257    rc = rtems_bsdnet_ifconfig(iface, SIOCSIFFLAGS, &flags);
     258    if (rc < 0) {
     259      printf("Could not set interface flags: %s\n", strerror(errno));
     260      return -1;
     261    }
    225262  }
    226263
     
    230267rtems_shell_cmd_t rtems_shell_IFCONFIG_Command = {
    231268  "ifconfig",                                      /* name */
    232   "TBD",                                           /* usage */
     269  IFCONFIG_USAGE,                                  /* usage */
    233270  "network",                                       /* topic */
    234271  rtems_shell_main_ifconfig,                       /* command */
Note: See TracChangeset for help on using the changeset viewer.