Changeset 44ffbd5 in rtems-libbsd


Ignore:
Timestamp:
Oct 12, 2012, 12:03:46 AM (7 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.11, c1e05b9ea378b2971e3d7704779112b4bc4296da, freebsd-9.3, 4a77611a223ea883fb548679b516d326a020d447
Children:
81d9b34
Parents:
82e1c69
Message:

Add ifconfig command as RTEMS Shell command

This is enough to be able to invoke the ifconfig command but it
calls exit() which is inappropriate.

The "struct option" in the ifconfig code conflicts with a structure
of the same name in newlib's and glibc's getopt.h.

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • freebsd-userspace/commands/sbin/ifconfig/af_inet6.c

    r82e1c69 r44ffbd5  
    541541        ip6lifetime++;  /* print IPv6 address lifetime */
    542542}
     543#ifdef __rtems__
     544static struct ifconfig_option in6_Lopt = { .opt = "L", .opt_usage = "[-L]", .cb = in6_Lopt_cb };
     545#else
    543546static struct option in6_Lopt = { .opt = "L", .opt_usage = "[-L]", .cb = in6_Lopt_cb };
     547#endif
    544548
    545549static __constructor void
  • freebsd-userspace/commands/sbin/ifconfig/ifclone.c

    r82e1c69 r44ffbd5  
    184184        exit(0);
    185185}
     186#ifdef __rtems__
     187static struct ifconfig_option clone_Copt = { .opt = "C", .opt_usage = "[-C]", .cb = clone_Copt_cb };
     188#else
    186189static struct option clone_Copt = { .opt = "C", .opt_usage = "[-C]", .cb = clone_Copt_cb };
     190#endif
    187191
    188192static __constructor void
  • freebsd-userspace/commands/sbin/ifconfig/ifconfig.c

    r82e1c69 r44ffbd5  
     1#ifdef __rtems__
     2#define __need_getopt_newlib
     3#include <getopt.h>
     4#endif
    15/*
    26 * Copyright (c) 1983, 1993
     
    124128static void af_other_status(int);
    125129
     130#ifdef __rtems__
     131static struct ifconfig_option *opts = NULL;
     132
     133void
     134opt_register(struct ifconfig_option *p)
     135{
     136        p->next = opts;
     137        opts = p;
     138}
     139#else
    126140static struct option *opts = NULL;
    127141
     
    132146        opts = p;
    133147}
     148#endif
    134149
    135150static void
     
    137152{
    138153        char options[1024];
     154        #ifdef __rtems__
     155        struct ifconfig_option *p;
     156        #else
    139157        struct option *p;
     158        #endif
    140159
    141160        /* XXX not right but close enough for now */
     
    173192        char options[1024], *cp;
    174193        const char *ifname;
     194#ifdef __rtems__
     195        struct ifconfig_option *p;
     196#else
    175197        struct option *p;
     198#endif
    176199        size_t iflen;
     200#ifdef __rtems__
     201        struct getopt_data getopt_reent;
     202#endif
    177203
    178204        all = downonly = uponly = namesonly = noload = verbose = 0;
     
    182208        for (p = opts; p != NULL; p = p->next)
    183209                strlcat(options, p->opt, sizeof(options));
     210#ifdef __rtems__
     211        memset(&getopt_reent, 0, sizeof(getopt_data));
     212        while ((c = getopt_r(argc, argv, options, &getopt_reent)) != -1) {
     213#else
    184214        while ((c = getopt(argc, argv, options)) != -1) {
     215#endif
    185216                switch (c) {
    186217                case 'a':       /* scan all interfaces */
     
    673704
    674705        memcpy(&my_ifr, &ifr, sizeof(my_ifr));
     706#ifndef __rtems__
    675707        my_ifr.ifr_jid = jail_getid(jname);
    676 #ifndef __rtems__
    677708        if (my_ifr.ifr_jid < 0)
    678709                errx(1, "%s", jail_errmsg);
     
    689720
    690721        memcpy(&my_ifr, &ifr, sizeof(my_ifr));
     722#ifndef __rtems__
    691723        my_ifr.ifr_jid = jail_getid(jname);
    692 #ifndef __rtems__
    693724        if (my_ifr.ifr_jid < 0)
    694725                errx(1, "%s", jail_errmsg);
     
    10621093ifmaybeload(const char *name)
    10631094{
     1095#ifndef __rtems__
    10641096#define MOD_PREFIX_LEN          3       /* "if_" */
    10651097        struct module_stat mstat;
     
    11081140        /* not present, we should try to load it */
    11091141        kldload(ifkind);
     1142#endif
    11101143}
    11111144
     
    11891222#undef N
    11901223}
     1224
     1225#ifdef __rtems__
     1226  #include <rtems/shell.h>
     1227
     1228  rtems_shell_cmd_t rtems_shell_IFCONFIG_Command = {
     1229    "ifconfig",                    /* name */
     1230    "ifconfig [args]",             /* usage */
     1231    "net",                         /* topic */
     1232    main_ifconfig,                 /* command */
     1233    NULL,                          /* alias */
     1234    NULL                           /* next */
     1235  };
     1236#endif
  • freebsd-userspace/commands/sbin/ifconfig/ifconfig.h

    r82e1c69 r44ffbd5  
    122122void    af_register(struct afswtch *);
    123123
     124#ifdef __rtems__
     125struct ifconfig_option {
     126#else
    124127struct option {
     128#endif
    125129        const char *opt;
    126130        const char *opt_usage;
    127131        void    (*cb)(const char *arg);
     132        #ifdef __rtems__
     133        struct ifconfig_option *next;
     134        #else
    128135        struct option *next;
     136        #endif
    129137};
     138#ifdef __rtems__
     139void    opt_register(struct ifconfig_option *);
     140#else
    130141void    opt_register(struct option *);
     142#endif
    131143
    132144extern  struct ifreq ifr;
  • freebsd-userspace/commands/sbin/ifconfig/ifgroup.c

    r82e1c69 r44ffbd5  
    171171        .af_other_status = getifgroups,
    172172};
     173#ifdef __rtems__
     174static struct ifconfig_option group_gopt = { "g:", "[-g groupname]", printgroup };
     175#else
    173176static struct option group_gopt = { "g:", "[-g groupname]", printgroup };
     177#endif
    174178
    175179static __constructor void
  • freebsd-userspace/rtems/include/namespace.h

    r82e1c69 r44ffbd5  
    5656#define _fstat                          fstat
    5757#define _stat                           stat
     58#define _ioctl                          ioctl
    5859
    5960#define _sigprocmask                    sigprocmask
  • freebsd-userspace/rtems/include/rtems/netcmds-config.h

    r82e1c69 r44ffbd5  
    2626  extern rtems_shell_cmd_t rtems_shell_PING6_Command;
    2727
    28   // extern rtems_shell_cmd_t rtems_shell_IFCONFIG_Command;
    29   // extern rtems_shell_cmd_t rtems_shell_ROUTE_Command;
     28  extern rtems_shell_cmd_t rtems_shell_IFCONFIG_Command;
     29  extern rtems_shell_cmd_t rtems_shell_ROUTE_Command;
    3030  // extern rtems_shell_cmd_t rtems_shell_NETSTATS_Command;
    3131// #endif
  • testsuite/netshell01/shellconfig.c

    r82e1c69 r44ffbd5  
    1111
    1212#define CONFIGURE_SHELL_USER_COMMANDS \
    13     &rtems_shell_PING_Command
     13    &rtems_shell_PING_Command, \
     14    &rtems_shell_ROUTE_Command, \
     15    &rtems_shell_IFCONFIG_Command
    1416
    1517#include <rtems/shellconfig.h>
Note: See TracChangeset for help on using the changeset viewer.