Introduced sysctl mib key for OSI-L2/VPN and misc. bugfixes.

Statement in route_output() maps to net/rtsock.c

    if (rtm->rtm_flags & RTF_MPLS) {
        struct rtentry *nrt = NULL;
        error = mpls_rt_output_fib(&info, &nrt, rtm, so->so_fibnum);
        if (error == 0) {
            switch (rtm->rtm_type) {
            case RTM_ADD:
                if (nrt != NULL) {
                    RT_LOCK(nrt);
                    rt_setmetrics(rtm->rtm_inits,
                        &rtm->rtm_rmx, &nrt->rt_rmx);
                    rtm->rtm_index = nrt->rt_ifp->if_index;
                    RT_UNLOCK(nrt);
                }
                    /* FALLTHROUGH */
            case RTM_DELETE:
                senderr(error);
            default:
                break;
            }
        } else
            senderr(error);
    }

simplyfied, because unsupported options are filtered out
during x-connect by mpls_rt_output_fib(). I've changed name of
mpls_rtexpunge() into mpls_rtexpunge_fib(). Finally, due to
backward compatibility

  # sysctl net.mpls.empty_cw= 1

enables prepending empty CW before frame will by
encapsulated by MPLS_RD_ETHDEMUX and  succeeding
VP label. MIB remains in disabled state as default
setup. By (see mpls_input() in netmpls/mpls_input.c)

    switch (ifp->if_type) {
    case IFT_ETHER:
    case IFT_VETHER:
    case IFT_FDDI:
        if ((m = mpls_shim_pop(m)) == NULL)
            break;

        if (mpls_empty_cw != 0)
            m_adj(m, MPLS_CWLEN);

        if (*mtod(m, uint32_t *) == 0)
            m_adj(m, MPLS_CWLEN);

        (*ifp->if_transmit)(ifp, m);
        break;
    case IFT_MPLS:
        (*ifp->if_input)(ifp, m);
        break;
    default:
        goto out;
    }

and (see mpe_input() in net/mpe_input.c)

    if (mpls_empty_cw != 0)
        m_adj(m, MPLS_CWLEN);

    if (*mtod(m, uint32_t *) == 0)
        m_adj(m, MPLS_CWLEN);

ensures such that empty CW may removed in any case.
	Finally, some bugfixes due to INET6 integration. I've started i
mplementing ND6 integration for ARP in MPLS domain.
ntroduced sysctl mib key for OSI-L2/VPN and misc. bugfixes.

Statement in route_output() maps to net/rtsock.c

    if (rtm->rtm_flags & RTF_MPLS) {
        struct rtentry *nrt = NULL;
        error = mpls_rt_output_fib(&info, &nrt, rtm, so->so_fibnum);
        if (error == 0) {
            switch (rtm->rtm_type) {
            case RTM_ADD:
                if (nrt != NULL) {
                    RT_LOCK(nrt);
                    rt_setmetrics(rtm->rtm_inits,
                        &rtm->rtm_rmx, &nrt->rt_rmx);
                    rtm->rtm_index = nrt->rt_ifp->if_index;
                    RT_UNLOCK(nrt);
                }
                    /* FALLTHROUGH */
            case RTM_DELETE:
                senderr(error);
            default:
                break;
            }
        } else
            senderr(error);
    }

simplyfied, because unsupported options are filtered out
during x-connect by mpls_rt_output_fib(). I've changed name of
mpls_rtexpunge() into mpls_rtexpunge_fib(). Finally, due to
backward compatibility

  # sysctl net.mpls.empty_cw= 1

enables prepending empty CW before frame will by
encapsulated by MPLS_RD_ETHDEMUX and  succeeding
VP label. MIB remains in disabled state as default
setup. By (see mpls_input() in netmpls/mpls_input.c)

    switch (ifp->if_type) {
    case IFT_ETHER:
    case IFT_VETHER:
    case IFT_FDDI:
        if ((m = mpls_shim_pop(m)) == NULL)
            break;

        if (mpls_empty_cw != 0)
            m_adj(m, MPLS_CWLEN);

        if (*mtod(m, uint32_t *) == 0)
            m_adj(m, MPLS_CWLEN);

        (*ifp->if_transmit)(ifp, m);
        break;
    case IFT_MPLS:
        (*ifp->if_input)(ifp, m);
        break;
    default:
        goto out;
    }

and (see mpe_input() in net/mpe_input.c)

    if (mpls_empty_cw != 0)
        m_adj(m, MPLS_CWLEN);

    if (*mtod(m, uint32_t *) == 0)
        m_adj(m, MPLS_CWLEN);

ensures such that empty CW may removed in any case.
	Finally, some bugfixes due to INET6 integration. I've started i
mplementing ND6 integration for ARP in MPLS domain.