Changeset e846288 in rtems-libbsd


Ignore:
Timestamp:
Jun 21, 2017, 12:35:19 PM (2 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
5283630d2c9d40deb0183696d278e02644fe4326, bc2ba9a9cdc7381c2a4f2ae6ee303be636f31368
Children:
33d82be1
Parents:
07c8680
git-author:
Sebastian Huber <sebastian.huber@…> (06/21/17 12:35:19)
git-committer:
Sebastian Huber <sebastian.huber@…> (10/23/17 07:24:06)
Message:

Add rtems_bsd_set_if_input()

Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/net/if.c

    r07c8680 re846288  
    26992699        }
    27002700
     2701#ifdef __rtems__
     2702        case RTEMS_SIOSIFINPUT:
     2703                if (ifp->if_input_arg == NULL) {
     2704                        struct rtems_ifinputreq *ifipfr;
     2705
     2706                        ifipfr = (struct rtems_ifinputreq *)data;
     2707                        ifipfr->old_if_input = ifp->if_input;
     2708                        ifp->if_input_arg = ifipfr->arg;
     2709                        (*ifipfr->init)(ifp, ifipfr->arg);
     2710                        ifp->if_input = ifipfr->new_if_input;
     2711                        error = 0;
     2712                } else {
     2713                        return (EEXIST);
     2714                }
     2715                break;
     2716#endif /* __rtems__ */
    27012717        default:
    27022718                error = ENOIOCTL;
  • freebsd/sys/net/if_var.h

    r07c8680 re846288  
    355355        if_snd_tag_free_t *if_snd_tag_free;
    356356
     357#ifndef __rtems__
    357358        /*
    358359         * Spare fields to be added before branching a stable branch, so
     
    361362         */
    362363        int     if_ispare[4];           /* general use */
    363 };
     364#else /* __rtems__ */
     365        void    *if_input_arg;
     366#endif /* __rtems__ */
     367};
     368#ifdef __rtems__
     369struct rtems_ifinputreq {
     370        char    ifr_name[IFNAMSIZ];
     371        void    *arg;
     372        void    (*init)(struct ifnet *, void *);
     373        void    (*new_if_input)(struct ifnet *, struct mbuf *);
     374        void    (*old_if_input)(struct ifnet *, struct mbuf *);
     375};
     376#define RTEMS_SIOSIFINPUT       _IOWR('i', 255, struct rtems_ifinputreq)
     377#endif /* __rtems__ */
    364378
    365379/* for compatibility with other BSDs */
  • libbsd.py

    r07c8680 re846288  
    7373            'rtems/rtems-bsd-rc-conf-pf.c',
    7474            'rtems/rtems-bsd-rc-conf.c',
     75            'rtems/rtems-bsd-set-if-input.c',
    7576            'rtems/rtems-bsd-shell-arp.c',
    7677            'rtems/rtems-bsd-shell-ifconfig.c',
  • libbsd_waf.py

    r07c8680 re846288  
    21982198              'rtemsbsd/rtems/rtems-bsd-rc-conf.c',
    21992199              'rtemsbsd/rtems/rtems-bsd-regdomain.c',
     2200              'rtemsbsd/rtems/rtems-bsd-set-if-input.c',
    22002201              'rtemsbsd/rtems/rtems-bsd-shell-arp.c',
    22012202              'rtemsbsd/rtems/rtems-bsd-shell-dhcpcd.c',
  • rtemsbsd/include/rtems/bsd/zerocopy.h

    r07c8680 re846288  
    88
    99/*
    10  * Copyright (c) 2015 embedded brains GmbH.  All rights reserved.
     10 * Copyright (c) 2015, 2017 embedded brains GmbH.  All rights reserved.
    1111 *
    1212 *  embedded brains GmbH
     
    6262    const struct sockaddr *dest_addr);
    6363
     64struct ifnet;
     65
     66typedef void (*rtems_bsd_if_input_init)(struct ifnet *, void *);
     67
     68typedef void (*rtems_bsd_if_input)(struct ifnet *, struct mbuf *);
     69
     70/**
     71 * @brief Sets the interface input handler of the specified network interface.
     72 *
     73 * @param ifname The network interface name.
     74 * @param init Initialization routine called right before the new interface
     75 *   input handler is registered in the context of the executing thread.
     76 * @param if_input The new interface input handler.
     77 * @param arg The interface input handler argument available via struct
     78 * ifnet::if_input_arg.
     79 *
     80 * @retval NULL An error occurred.
     81 * @retval other The old interface input handler.
     82 */
     83rtems_bsd_if_input rtems_bsd_set_if_input(const char *ifname,
     84    rtems_bsd_if_input_init init, rtems_bsd_if_input if_input,
     85    void *arg);
     86
    6487#ifdef __cplusplus
    6588}
Note: See TracChangeset for help on using the changeset viewer.