コード例 #1
0
ファイル: netif.c プロジェクト: comrid1987/jb3500
/**
 * Change the IP address of a network interface
 *
 * @param netif the network interface to change
 * @param ipaddr the new IP address
 *
 * @note call netif_set_addr() if you also want to change netmask and
 * default gateway
 */
void
netif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr)
{
    /* TODO: Handling of obsolete pcbs */
    /* See:  http://mail.gnu.org/archive/html/lwip-users/2003-03/msg00118.html */
#if LWIP_TCP
    struct tcp_pcb *pcb;
    struct tcp_pcb_listen *lpcb;

    /* address is actually being changed? */
    if ((ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) {
        /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */
        LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n"));
        pcb = tcp_active_pcbs;
        while (pcb != NULL) {
            /* PCB bound to current local interface address? */
            if (ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))
#if LWIP_AUTOIP
                    /* connections to link-local addresses must persist (RFC3927 ch. 1.9) */
                    && !ip_addr_islinklocal(&(pcb->local_ip))
#endif /* LWIP_AUTOIP */
               ) {
                /* this connection must be aborted */
                struct tcp_pcb *next = pcb->next;
                LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb));
                tcp_abort(pcb);
                pcb = next;
            } else {
                pcb = pcb->next;
            }
        }
        for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
            /* PCB bound to current local interface address? */
            if ((!(ip_addr_isany(&(lpcb->local_ip)))) &&
                    (ip_addr_cmp(&(lpcb->local_ip), &(netif->ip_addr)))) {
                /* The PCB is listening to the old ipaddr and
                 * is set to listen to the new one instead */
                ip_addr_set(&(lpcb->local_ip), ipaddr);
            }
        }
    }
#endif
    snmp_delete_ipaddridx_tree(netif);
    snmp_delete_iprteidx_tree(0,netif);
    /* set new IP address to netif */
    ip_addr_set(&(netif->ip_addr), ipaddr);
    snmp_insert_ipaddridx_tree(netif);
    snmp_insert_iprteidx_tree(0,netif);

    LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
                netif->name[0], netif->name[1],
                ip4_addr1_16(&netif->ip_addr),
                ip4_addr2_16(&netif->ip_addr),
                ip4_addr3_16(&netif->ip_addr),
                ip4_addr4_16(&netif->ip_addr)));
}
コード例 #2
0
ファイル: netif.c プロジェクト: xskali12/canshark
/**
 * Change the netmask of a network interface
 *
 * @param netif the network interface to change
 * @param netmask the new netmask
 *
 * @note call netif_set_addr() if you also want to change ip address and
 * default gateway
 */
void netif_set_netmask(struct netif *netif, ip_addr_t *netmask)
{
	snmp_delete_iprteidx_tree(0, netif);
	/* set new netmask to netif */
	ip_addr_set(&(netif->netmask), netmask);
	snmp_insert_iprteidx_tree(0, netif);
	LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
		    ("netif: netmask of interface %c%c set to " IP4_F "\n",
		     netif->name[0], netif->name[1], IP4_FV(&netif->netmask)));
}
コード例 #3
0
ファイル: netif.c プロジェクト: projectarkc/psiphon
/**
 * Set a network interface as the default network interface
 * (used to output all packets for which no specific route is found)
 *
 * @param netif the default network interface
 */
void
netif_set_default(struct netif *netif)
{
  if (netif == NULL) {
    /* remove default route */
    snmp_delete_iprteidx_tree(1, netif);
  } else {
    /* install default route */
    snmp_insert_iprteidx_tree(1, netif);
  }
  netif_default = netif;
  LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n",
           netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\''));
}
コード例 #4
0
ファイル: netif.c プロジェクト: laurarg94/fpga-magic-1
/**
 * Change the netmask of a network interface
 *
 * @param netif the network interface to change
 * @param netmask the new netmask
 *
 * @note call netif_set_addr() if you also want to change ip address and
 * default gateway
 */
void
netif_set_netmask(struct netif *netif, struct ip_addr *netmask)
{
  snmp_delete_iprteidx_tree(0, netif);
  /* set new netmask to netif */
  ip_addr_set(&(netif->netmask), netmask);
  snmp_insert_iprteidx_tree(0, netif);
  LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | 3, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
    netif->name[0], netif->name[1],
    ip4_addr1(&netif->netmask),
    ip4_addr2(&netif->netmask),
    ip4_addr3(&netif->netmask),
    ip4_addr4(&netif->netmask)));
}
コード例 #5
0
ファイル: netif.c プロジェクト: EarlGray/ling
/**
 * Change the netmask of a network interface
 *
 * @param netif the network interface to change
 * @param netmask the new netmask
 *
 * @note call netif_set_addr() if you also want to change ip address and
 * default gateway
 */
void
netif_set_netmask(struct netif *netif, ip_addr_t *netmask)
{
  snmp_delete_iprteidx_tree(0, netif);
  /* set new netmask to netif */
  ip_addr_set(&(netif->netmask), netmask);
  snmp_insert_iprteidx_tree(0, netif);
  LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
	((netif->name[0]) ?netif->name[0] :'-'),
	((netif->name[1]) ?netif->name[1] :'-'),
    ip4_addr1_16(&netif->netmask),
    ip4_addr2_16(&netif->netmask),
    ip4_addr3_16(&netif->netmask),
    ip4_addr4_16(&netif->netmask)));
}
コード例 #6
0
ファイル: if.c プロジェクト: balajig/Layer3Switch
/**
 * Change the netmask of a network interface
 *
 * @param netif the network interface to change
 * @param netmask the new netmask
 *
 * @note call if_set_addr() if you also want to change ip address and
 * default gateway
 */
void
if_set_netmask (struct interface *netif, ip_addr_t * netmask)
{
#ifdef CONFIG_OPENSWITCH_TCP_IP
    snmp_delete_iprteidx_tree (0, netif);
#endif
    /* set new netmask to netif */
    ip_addr_set (&(netif->netmask), netmask);
#ifdef CONFIG_OPENSWITCH_TCP_IP
    snmp_insert_iprteidx_tree (0, netif);
#endif
    LWIP_DEBUGF (NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
                 ("netif: netmask of interface %c%c set to %" U16_F ".%" U16_F
                  ".%" U16_F ".%" U16_F "\n", netif->ifDescr[0], netif->ifDescr[1],
                  ip4_addr1_16 (&netif->netmask),
                  ip4_addr2_16 (&netif->netmask),
                  ip4_addr3_16 (&netif->netmask),
                  ip4_addr4_16 (&netif->netmask)));
}