Exemplo n.º 1
0
void
pdq_ifinit(
    pdq_softc_t *sc)
{
    if (sc->sc_if.if_flags & IFF_UP) {
        sc->sc_if.if_flags |= IFF_RUNNING;
        if (sc->sc_if.if_flags & IFF_PROMISC) {
            sc->sc_pdq->pdq_flags |= PDQ_PROMISC;
        } else {
            sc->sc_pdq->pdq_flags &= ~PDQ_PROMISC;
        }
        if (sc->sc_if.if_flags & IFF_ALLMULTI) {
            sc->sc_pdq->pdq_flags |= PDQ_ALLMULTI;
        } else {
            sc->sc_pdq->pdq_flags &= ~PDQ_ALLMULTI;
        }
        if (sc->sc_if.if_flags & IFF_LINK1) {
            sc->sc_pdq->pdq_flags |= PDQ_PASS_SMT;
        } else {
            sc->sc_pdq->pdq_flags &= ~PDQ_PASS_SMT;
        }
        sc->sc_pdq->pdq_flags |= PDQ_RUNNING;
        pdq_run(sc->sc_pdq);
    } else {
        sc->sc_if.if_flags &= ~IFF_RUNNING;
        sc->sc_pdq->pdq_flags &= ~PDQ_RUNNING;
        pdq_stop(sc->sc_pdq);
    }
}
Exemplo n.º 2
0
static void
pdq_ifstop(pdq_softc_t *sc)
{

    PDQ_IFNET(sc)->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
    sc->sc_pdq->pdq_flags &= ~PDQ_RUNNING;
    pdq_stop(sc->sc_pdq);
    callout_stop(&sc->watchdog);
}