Ignore:
Timestamp:
Mar 23, 1999, 10:39:13 PM (22 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
f1f42b4
Parents:
ca3fec49
Message:

Patch from Eric Norum <eric@…> to improve parsing of
network interface names. This change does not introduce any
compatibility problems.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libnetworking/rtems/rtems_glue.c

    rca3fec49 rb6f5f93  
    883883        return 0;
    884884}
     885
     886/*
     887 * Parse a network driver name into a name and a unit number
     888 */
     889int
     890rtems_bsdnet_parse_driver_name (const struct rtems_bsdnet_ifconfig *config, char **namep)
     891{
     892        const char *cp = config->name;
     893        char c;
     894        int unitNumber = 0;
     895
     896        if (cp == NULL) {
     897                printf ("No network driver name");
     898                return -1;
     899        }
     900        while ((c = *cp++) != '\0') {
     901                if ((c >= '0') && (c <= '9')) {
     902                        int len = cp - config->name - 1;
     903                        if ((len < 2) || (len > 50))
     904                                break;
     905                        for (;;) {
     906                                unitNumber = (unitNumber * 10) + (c - '0');
     907                                c = *cp++;
     908                                if (c == '\0') {
     909                                        char *unitName = malloc (len);
     910                                        if (unitName == NULL) {
     911                                                printf ("No memory");
     912                                                return -1;
     913                                        }
     914                                        strncpy (unitName, config->name, len - 1);
     915                                        unitName[len-1] = '\0';
     916                                        *namep = unitName;
     917                                        return unitNumber;
     918                                }
     919                                if ((c < '0') || (c > '9'))
     920                                        break;
     921                        }
     922                        break;
     923                }
     924        }
     925        printf ("Bad network driver name `%s'", config->name);
     926        return -1;
     927}
Note: See TracChangeset for help on using the changeset viewer.