Add a little more 6loWPAN logic
This commit is contained in:
parent
dab2fb2eb3
commit
65e95b95f2
@ -418,6 +418,10 @@ int ipv4_input(FAR struct net_driver_s *dev);
|
|||||||
int ipv6_input(FAR struct net_driver_s *dev);
|
int ipv6_input(FAR struct net_driver_s *dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_NET_6LOWPAN
|
||||||
|
int sixlowpan_input(FAR struct net_driver_s *dev);
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Polling of connections
|
* Polling of connections
|
||||||
*
|
*
|
||||||
|
@ -284,7 +284,8 @@ struct sixlowpan_addr_context
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* The structure of a next header compressor.
|
/* The structure of a next header compressor. This compressor is provided
|
||||||
|
* by architecture-specific logic outside of the network stack.
|
||||||
*
|
*
|
||||||
* TODO: needs more parameters when compressing extension headers, etc.
|
* TODO: needs more parameters when compressing extension headers, etc.
|
||||||
*/
|
*/
|
||||||
@ -307,8 +308,51 @@ struct sixlowpan_nhcompressor_s
|
|||||||
FAR uint8_t *uncompressed_len);
|
FAR uint8_t *uncompressed_len);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* RIME sniffer callbacks */
|
||||||
|
|
||||||
|
struct sixlowpan_rime_sniffer_s
|
||||||
|
{
|
||||||
|
CODE void (*input)(void);
|
||||||
|
CODE void (*output)(int mac_status);
|
||||||
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: sixlowpan_set_compressor
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure to use the architecture-specific compressor.
|
||||||
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* compressor - A reference to the new compressor to be used. This may
|
||||||
|
* be a NULL value to disable the compressor.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void sixlowpan_set_compressor(FAR struct sixlowpan_nhcompressor_s *compressor);
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: sixlowpan_set_sniffer
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure to use an architecture-specific sniffer to enable tracing of
|
||||||
|
* IP.
|
||||||
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* sniffer - A reference to the new sniffer to be used. This may
|
||||||
|
* be a NULL value to disable the sniffer.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void sixlowpan_set_sniffer(FAR struct sixlowpan_rime_sniffer_s *sniffer);
|
||||||
|
|
||||||
#endif /* __INCLUDE_NUTTX_NET_SIXLOWOAN_H */
|
#endif /* __INCLUDE_NUTTX_NET_SIXLOWOAN_H */
|
||||||
|
@ -39,7 +39,7 @@ ifeq ($(CONFIG_NET_6LOWPAN),y)
|
|||||||
|
|
||||||
# Include IEEE 802.15.4 file in the build
|
# Include IEEE 802.15.4 file in the build
|
||||||
|
|
||||||
# NET_CSRCS +=
|
NET_CSRCS += sixlowpan_compressor.c sixlowpan_sniffer.c
|
||||||
|
|
||||||
# Include the sixlowpan directory in the build
|
# Include the sixlowpan directory in the build
|
||||||
|
|
||||||
|
@ -44,6 +44,19 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_NET_6LOWPAN
|
#ifdef CONFIG_NET_6LOWPAN
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Data
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* A pointer to the optional, architecture-specific compressor */
|
||||||
|
|
||||||
|
struct sixlowpan_nhcompressor_s; /* Foward reference */
|
||||||
|
extern FAR struct sixlowpan_nhcompressor_s *g_sixlowpan_compressor;
|
||||||
|
|
||||||
|
/* Rime Sniffer support for one single listener to enable trace of IP */
|
||||||
|
|
||||||
|
extern struct sixlowpan_rime_sniffer_s *g_sixlopan_sniffer;
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
88
net/sixlowpan/sixlowpan_compressor.c
Normal file
88
net/sixlowpan/sixlowpan_compressor.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* net/sixlowpan/sixlowpan_compressor.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include "nuttx/net/net.h"
|
||||||
|
#include "nuttx/net/sixlowpan.h"
|
||||||
|
|
||||||
|
#include "sixlowpan/sixlopan.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_NET_6LOWPAN
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Data
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* A pointer to the optional, architecture-specific compressor */
|
||||||
|
|
||||||
|
FAR struct sixlowpan_nhcompressor_s *g_sixlowpan_compressor;
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: sixlowpan_set_compressor
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure to use the architecture-specific compressor.
|
||||||
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* compressor - A reference to the new compressor to be used. This may
|
||||||
|
* be a NULL value to disable the compressor.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void sixlowpan_set_compressor(FAR struct sixlowpan_nhcompressor_s *compressor)
|
||||||
|
{
|
||||||
|
/* Make sure that the compressor is not in use */
|
||||||
|
|
||||||
|
net_lock();
|
||||||
|
|
||||||
|
/* Then instantiate the new compressor */
|
||||||
|
|
||||||
|
g_sixlowpan_compressor = compressor;
|
||||||
|
net_unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_NET_6LOWPAN */
|
89
net/sixlowpan/sixlowpan_sniffer.c
Normal file
89
net/sixlowpan/sixlowpan_sniffer.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* net/sixlowpan/sixlowpan_sniffer.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include "nuttx/net/net.h"
|
||||||
|
#include "nuttx/net/sixlowpan.h"
|
||||||
|
|
||||||
|
#include "sixlowpan/sixlopan.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_NET_6LOWPAN
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Data
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* A pointer to the optional, architecture-specific sniffer */
|
||||||
|
|
||||||
|
FAR struct sixlowpan_rime_sniffer_s *g_sixlowpan_sniffer;
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Function: sixlowpan_set_sniffer
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure to use an architecture-specific sniffer to enable tracing of
|
||||||
|
* IP.
|
||||||
|
*
|
||||||
|
* Input parameters:
|
||||||
|
* sniffer - A reference to the new sniffer to be used. This may
|
||||||
|
* be a NULL value to disable the sniffer.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void sixlowpan_set_sniffer(FAR struct sixlowpan_rime_sniffer_s *sniffer)
|
||||||
|
{
|
||||||
|
/* Make sure that the sniffer is not in use */
|
||||||
|
|
||||||
|
net_lock();
|
||||||
|
|
||||||
|
/* Then instantiate the new sniffer */
|
||||||
|
|
||||||
|
g_sixlowpan_sniffer = sniffer;
|
||||||
|
net_unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_NET_6LOWPAN */
|
Loading…
Reference in New Issue
Block a user