Esempio n. 1
0
/************************************************************************
* NAME: fnet_inet_ptos
*
* DESCRIPTION:The function converts from presentation format (string)
*	        to struct sockaddr.
*************************************************************************/
int fnet_inet_ptos (char *str, struct sockaddr *addr)
{   
#if FNET_CFG_IP4    
    if(fnet_inet_pton(AF_INET, str, addr->sa_data, sizeof(addr->sa_data)) == FNET_OK)
        addr->sa_family = AF_INET;
    else 
#endif /* FNET_CFG_IP4 */
#if FNET_CFG_IP6 
    if(fnet_inet_pton(AF_INET6, str, addr->sa_data, sizeof(addr->sa_data)) == FNET_OK)
        addr->sa_family = AF_INET6;
    else    
#endif /* FNET_CFG_IP6 */ 
        return FNET_ERR;
        
    return FNET_OK;    
}
Esempio n. 2
0
/************************************************************************
* NAME: fnet_inet_ptos
*
* DESCRIPTION:The function converts from presentation format (string)
*	        to struct sockaddr.
*************************************************************************/
int fnet_inet_ptos (const char *str, struct sockaddr *addr)
{   
#if FNET_CFG_IP4    
    if(fnet_inet_pton(AF_INET, str, addr->sa_data, sizeof(addr->sa_data)) == FNET_OK)
    {
        addr->sa_family = AF_INET;
    }
    else 
#endif /* FNET_CFG_IP4 */
#if FNET_CFG_IP6 
    if(fnet_inet_pton(AF_INET6, str, addr->sa_data, sizeof(addr->sa_data)) == FNET_OK)
    {
        addr->sa_family = AF_INET6;
        /* Scope ID.*/
        {
            unsigned long   scope_id;
            const char      *p = fnet_strrchr(str, '%'); /* Find "%<scope id>".*/
            
            if(p != FNET_NULL)
            {
                scope_id = fnet_strtoul((p+1), 0, 10);
            }
            else
            {
                scope_id = 0; /* Default interface.*/
            }
            
            ((struct sockaddr_in6 *)addr)->sin6_scope_id = scope_id;
        }
    }
    else    
#endif /* FNET_CFG_IP6 */ 
        return FNET_ERR;

    addr->sa_port = 0;
        
    return FNET_OK;    
}
Esempio n. 3
0
static void fapp_unbind_cmd( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t ** argv )
{
    fnet_netif_desc_t   netif = fnet_netif_get_default();
    fnet_ip6_addr_t     addr;
    
    FNET_COMP_UNUSED_ARG(argc);
    
    if(fnet_inet_pton(AF_INET6, argv[1], &addr, sizeof(addr)) == FNET_OK)
    {
        fnet_netif_unbind_ip6_addr(netif, &addr);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}