//--//

#if defined(ADS_LINKER_BUG__NOT_ALL_UNUSED_VARIABLES_ARE_REMOVED)
#pragma arm section zidata = "g_NetworkConfig_pcm023"
#endif


NETWORK_CONFIG g_NetworkConfig =
{
    { TRUE },
    1,      // interface count
    {       
        {                                      
            SOCK_NETWORKCONFIGURATION_FLAGS_DHCP,         /*flags         to enable wireless bitwise OR this value with  SOCK_NETWORKCONFIGURATION_FLAGS_TYPE__set(SOCK_NETWORKCONFIGURATION_FLAGS_WIRELESS)*/  
            SOCK_MAKE_IP_ADDR_LITTLEEND(192,168,  5,100), /*ip address */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(255,255,255,  0), /*subnet mask*/  
            SOCK_MAKE_IP_ADDR_LITTLEEND(192,168,  5,  1), /*gateway    */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*dns1       */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*dns2       */  
            SOCK_NETWORKCONFIGURATION_INTERFACETYPE_ETHERNET,     /* Change to SOCK_NETWORKCONFIGURATION_INTERFACETYPE_WIRELESS_80211 for wireless */ 
            6,              /*mac address length*/                  
            {               /*mac address*/                         
                0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
            }                                                       
        },                                                          
    },
};
Example #2
0
//--//

#if defined(ADS_LINKER_BUG__NOT_ALL_UNUSED_VARIABLES_ARE_REMOVED)
#pragma arm section zidata = "g_NetworkConfig_Gadgeteer"
#endif


NETWORK_CONFIG g_NetworkConfig =
{
    { TRUE },
    1,      // interface count
    {       
        {                                      
            SOCK_NETWORKCONFIGURATION_FLAGS_DHCP,         /*flags         to enable wireless bitwise OR this value with  SOCK_NETWORKCONFIGURATION_FLAGS_TYPE__set(SOCK_NETWORKCONFIGURATION_FLAGS_WIRELESS)*/  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*ip address */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*subnet mask*/  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*gateway    */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*dns1       */  
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), /*dns2       */  
            SOCK_NETWORKCONFIGURATION_INTERFACETYPE_ETHERNET,        /* Change to SOCK_NETWORKCONFIGURATION_INTERFACETYPE_WIRELESS_80211 for wireless */ 
            6,              /*mac address length*/                  
            {               /*mac address*/                         
                0x00, 0x04, 0xA3, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
            }                                                       
        },                                                          
    },
};
Example #3
0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <tinyhal.h>

//--//



NETWORK_CONFIG g_NetworkConfig =
{
    { TRUE },
    1,      // interface count
    {       // ENC28J60 chip
        {                                      
            SOCK_NETWORKCONFIGURATION_FLAGS_DHCP | SOCK_NETWORKCONFIGURATION_FLAGS_TYPE__set(SOCK_NETWORKCONFIGURATION_FLAGS_WIRELESS),
            SOCK_MAKE_IP_ADDR_LITTLEEND(192,168,  0, 200), 
            SOCK_MAKE_IP_ADDR_LITTLEEND(255,255,255,  0), 
            SOCK_MAKE_IP_ADDR_LITTLEEND(192,168,  0,  1), 
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), 
            SOCK_MAKE_IP_ADDR_LITTLEEND(  0,  0,  0,  0), 
            SOCK_NETWORKCONFIGURATION_INTERFACETYPE_ETHERNET,        /* Change to SOCK_NETWORKCONFIGURATION_INTERFACETYPE_WIRELESS_80211 for wireless */ 
            6,              
            {               
                0x00, 0x04, 0xA2, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
            }                                                       
        },
    },
};
HRESULT RTIP_SOCKETS_Driver::UpdateAdapterConfiguration( UINT32 interfaceIndex, UINT32 updateFlags, SOCK_NetworkConfiguration* config )
{
    NATIVE_PROFILE_PAL_NETWORK();
    if(interfaceIndex >= NETWORK_INTERFACE_COUNT) 
    {
        return CLR_E_INVALID_PARAMETER;
    }
    
    BOOL fEnableDhcp = (0 != (config->flags & SOCK_NETWORKCONFIGURATION_FLAGS_DHCP));

    if(0 != (updateFlags & SOCK_NETWORKCONFIGURATION_UPDATE_DHCP))
    {
        if(fEnableDhcp)
        {           
            DHCP_conf    reg_conf;

            memset(&reg_conf, 0, sizeof(reg_conf));
            memset(&g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession, 0, sizeof(DHCP_session));

            xn_dhcp_init_conf(&reg_conf);

            g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession.packet_style = DHCP_MICROSOFT;

            if (SOCK_SOCKET_ERROR == xn_dhcp(g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber, &g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession, &reg_conf))
            { 
                DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_dhcp", FALSE); 
                return CLR_E_FAIL;
            }
        }
        else
        {
            if(SOCK_SOCKET_ERROR == rtp_net_set_ip(g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber, (RTP_PFUINT8)&config->ipaddr, (RTP_PFUINT8)&config->subnetmask))
            {
                DEBUG_HANDLE_SOCKET_ERROR("update cfg: rtp_net_set_ip", FALSE);
                return CLR_E_FAIL;
            }

            UINT32 destMask = SOCK_MAKE_IP_ADDR_LITTLEEND(0,0,0,0);

            if(SOCK_SOCKET_ERROR == xn_rt_add((RTP_PFUINT8)RT_DEFAULT, (RTP_PFUINT8)&destMask, (RTP_PFUINT8)&config->gateway, RT_USEIFACEMETRIC, g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber, RT_INF))
            {
                DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_rt_add", FALSE);
                return FALSE;
            }
        }
    }

    if(fEnableDhcp)
    {
        if(0 != (updateFlags & SOCK_NETWORKCONFIGURATION_UPDATE_DHCP_RELEASE))
        {
            if(g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession.client_ip != 0)
            {
                if(SOCK_SOCKET_ERROR == xn_dhcp_release(&g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession))
                {
                    DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_dhcp_release", FALSE);
                    /*return CLR_E_FAIL;*/
                }
            }

            memset(&g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession, 0, sizeof(DHCP_session));
        }
        if(0 != (updateFlags & SOCK_NETWORKCONFIGURATION_UPDATE_DHCP_RENEW))
        {
            DHCP_conf reg_conf;

            xn_dhcp_init_conf(&reg_conf);

            g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession.packet_style = DHCP_MICROSOFT;

            if (SOCK_SOCKET_ERROR == xn_dhcp(g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber, &g_RTIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_currentDhcpSession, &reg_conf))
            {
                DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_dhcp", FALSE);
                return CLR_E_FAIL;
            }
        }
    }
    // when using DHCP do not use the static settings
    else if(0 != (updateFlags & SOCK_NETWORKCONFIGURATION_UPDATE_DNS))
    {
        if(config->dnsServer1 != 0 || config->dnsServer2 != 0)
        {
            xn_set_server_list( NULL, 0);
            
            // add the DNS servers of the config 
            if( config->dnsServer1 != 0)
            {
                RTP_PFCUINT8 dns1 = (RTP_PFCUINT8)&(config->dnsServer1);
                
                if (SOCK_SOCKET_ERROR == xn_add_dns_server( dns1 ))
                {
                    DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_add_dns_server(1)", FALSE);
                }
            }
            if( config->dnsServer2 != 0)
            {
                RTP_PFCUINT8 dns2 = (RTP_PFCUINT8)&(config->dnsServer2);

                if (SOCK_SOCKET_ERROR == xn_add_dns_server( dns2 ))
                {
                    DEBUG_HANDLE_SOCKET_ERROR("update cfg: xn_add_dns_server(2)", FALSE);
                }       
            }
        }
    }

    if(0 != (updateFlags & SOCK_NETWORKCONFIGURATION_UPDATE_MAC))
    {
        // mac address requires stack re-init
        Network_Uninitialize();
        Network_Initialize();
    }

    if(0 != (config->flags & SOCK_NETWORKCONFIGURATION_FLAGS_DYNAMIC_DNS))
    {
        // the rtip stack doesn't support dynamic dns
        return CLR_E_NOT_SUPPORTED;
    }
    
    return S_OK;
}