Lines 52-78
Link Here
|
52 |
#define EVL_APPLY_VLID(m, vlid) \ |
52 |
#define EVL_APPLY_VLID(m, vlid) \ |
53 |
do { \ |
53 |
do { \ |
54 |
if ((m)->m_flags & M_VLANTAG) { \ |
54 |
if ((m)->m_flags & M_VLANTAG) { \ |
55 |
(m)->m_pkthdr.ether_vtag &= EVL_VLID_MASK; \ |
55 |
(m)->m_pkthdr.ether_vtag &= ~EVL_VLID_MASK; \ |
56 |
(m)->m_pkthdr.ether_vtag |= (vlid); \ |
|
|
57 |
} else { \ |
56 |
} else { \ |
58 |
(m)->m_pkthdr.ether_vtag = (vlid); \ |
57 |
(m)->m_pkthdr.ether_vtag = 0; \ |
59 |
(m)->m_flags |= M_VLANTAG; \ |
58 |
(m)->m_flags |= M_VLANTAG; \ |
60 |
} \ |
59 |
} \ |
|
|
60 |
(m)->m_pkthdr.ether_vtag |= ((vlid) & EVL_VLID_MASK); \ |
61 |
} while (0) |
61 |
} while (0) |
62 |
|
62 |
|
63 |
/* Set the priority ID in an mbuf packet header non-destructively. */ |
63 |
/* Set the priority ID in an mbuf packet header non-destructively. */ |
64 |
#define EVL_APPLY_PRI(m, pri) \ |
64 |
#define EVL_APPLY_PRI(m, pri) \ |
65 |
do { \ |
65 |
do { \ |
66 |
if ((m)->m_flags & M_VLANTAG) { \ |
66 |
if ((m)->m_flags & M_VLANTAG) { \ |
67 |
uint16_t __vlantag = (m)->m_pkthdr.ether_vtag; \ |
67 |
(m)->m_pkthdr.ether_vtag &= ~EVL_PRI_MASK; \ |
68 |
(m)->m_pkthdr.ether_vtag |= EVL_MAKETAG( \ |
|
|
69 |
EVL_VLANOFTAG(__vlantag), (pri), \ |
70 |
EVL_CFIOFTAG(__vlantag)); \ |
71 |
} else { \ |
68 |
} else { \ |
72 |
(m)->m_pkthdr.ether_vtag = \ |
69 |
(m)->m_pkthdr.ether_vtag = 0; \ |
73 |
EVL_MAKETAG(0, (pri), 0); \ |
|
|
74 |
(m)->m_flags |= M_VLANTAG; \ |
70 |
(m)->m_flags |= M_VLANTAG; \ |
75 |
} \ |
71 |
} \ |
|
|
72 |
(m)->m_pkthdr.ether_vtag |= (((pri) & 7) << 13); \ |
76 |
} while (0) |
73 |
} while (0) |
77 |
|
74 |
|
78 |
/* sysctl(3) tags, for compatibility purposes */ |
75 |
/* sysctl(3) tags, for compatibility purposes */ |