⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhcpc.lst

📁 c8051f020_uip1.0.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   DHCPC                                                                 02/08/2010 20:58:33 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE DHCPC
OBJECT MODULE PLACED IN .\dhcpc.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\uip1.0\apps\dhcpc\dhcpc.c LARGE BROWSE INCDIR(..\uip1.0\apps;..\uip1.0\u
                    -ip;..\cp2200;..\cp2200;..\uip1.0\apps\dhcpc;..\uip1.0\apps\httpd) DEBUG OBJECTEXTEND PRINT(.\dhcpc.lst) OBJECT(.\dhcpc.o
                    -bj)

line level    source

   1          /*
   2           * Copyright (c) 2005, Swedish Institute of Computer Science
   3           * All rights reserved.
   4           *
   5           * Redistribution and use in source and binary forms, with or without
   6           * modification, are permitted provided that the following conditions
   7           * are met:
   8           * 1. Redistributions of source code must retain the above copyright
   9           *    notice, this list of conditions and the following disclaimer.
  10           * 2. Redistributions in binary form must reproduce the above copyright
  11           *    notice, this list of conditions and the following disclaimer in the
  12           *    documentation and/or other materials provided with the distribution.
  13           * 3. Neither the name of the Institute nor the names of its contributors
  14           *    may be used to endorse or promote products derived from this software
  15           *    without specific prior written permission.
  16           *
  17           * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
  18           * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19           * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20           * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
  21           * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22           * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23           * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24           * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25           * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26           * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27           * SUCH DAMAGE.
  28           *
  29           * This file is part of the uIP TCP/IP stack
  30           *
  31           * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
  32           */
  33          
  34          #include <stdio.h>
  35          #include <string.h>
  36          
  37          #include "uip.h"
  38          #include "dhcpc.h"
  39          #include "uip_timer.h"
  40          #include "pt.h"
  41          
  42          #define STATE_INITIAL         0
  43          #define STATE_SENDING         1
  44          #define STATE_OFFER_RECEIVED  2
  45          
  46          #define STATE_CONFIG_RECEIVED 3
  47          
  48          
  49          
  50          static struct dhcpc_state s;
  51                     
  52          
  53          struct dhcp_msg {
C51 COMPILER V9.00   DHCPC                                                                 02/08/2010 20:58:33 PAGE 2   

  54            u8_t op, htype, hlen, hops;
  55            u8_t xid[4];
  56            u16_t secs, flags;
  57            u8_t ciaddr[4];
  58            u8_t yiaddr[4];
  59            u8_t siaddr[4];
  60            u8_t giaddr[4];
  61            u8_t chaddr[16];
  62          #ifndef UIP_CONF_DHCP_LIGHT
  63            u8_t sname[64];
  64            u8_t file[128];
  65          #endif
  66            u8_t options[312];
  67          };
  68          
  69          #define BOOTP_BROADCAST 0x8000
  70          
  71          #define DHCP_REQUEST        1
  72          #define DHCP_REPLY          2
  73          #define DHCP_HTYPE_ETHERNET 1
  74          #define DHCP_HLEN_ETHERNET  6
  75          #define DHCP_MSG_LEN      236
  76          
  77          #define DHCPC_SERVER_PORT  67
  78          #define DHCPC_CLIENT_PORT  68
  79          
  80          #define DHCPDISCOVER  1
  81          #define DHCPOFFER     2
  82          #define DHCPREQUEST   3
  83          #define DHCPDECLINE   4
  84          #define DHCPACK       5
  85          #define DHCPNAK       6
  86          #define DHCPRELEASE   7
  87          
  88          #define DHCP_OPTION_SUBNET_MASK   1
  89          #define DHCP_OPTION_ROUTER        3
  90          #define DHCP_OPTION_DNS_SERVER    6
  91          #define DHCP_OPTION_REQ_IPADDR   50
  92          #define DHCP_OPTION_LEASE_TIME   51
  93          #define DHCP_OPTION_MSG_TYPE     53
  94          #define DHCP_OPTION_SERVER_ID    54
  95          #define DHCP_OPTION_REQ_LIST     55
  96          #define DHCP_OPTION_END         255
  97          
  98          static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
  99          static const u8_t magic_cookie[4] = {99, 130, 83, 99};
 100          /*---------------------------------------------------------------------------*/
 101          static u8_t *
 102          add_msg_type(u8_t *optptr, u8_t type)
 103          {
 104   1        *optptr++ = DHCP_OPTION_MSG_TYPE;
 105   1        *optptr++ = 1;
 106   1        *optptr++ = type;
 107   1        return optptr;
 108   1      }
 109          /*---------------------------------------------------------------------------*/
 110          static u8_t *
 111          add_server_id(u8_t *optptr)
 112          {
 113   1        *optptr++ = DHCP_OPTION_SERVER_ID;
 114   1        *optptr++ = 4;
 115   1        memcpy(optptr, s.serverid, 4);
C51 COMPILER V9.00   DHCPC                                                                 02/08/2010 20:58:33 PAGE 3   

 116   1        return optptr + 4;
 117   1      }
 118          /*---------------------------------------------------------------------------*/
 119          static u8_t *
 120          add_req_ipaddr(u8_t *optptr)
 121          {
 122   1        *optptr++ = DHCP_OPTION_REQ_IPADDR;
 123   1        *optptr++ = 4;
 124   1        memcpy(optptr, s.ipaddr, 4);
 125   1        return optptr + 4;
 126   1      }
 127          /*---------------------------------------------------------------------------*/
 128          static u8_t *
 129          add_req_options(u8_t *optptr)
 130          {
 131   1        *optptr++ = DHCP_OPTION_REQ_LIST;
 132   1        *optptr++ = 3;
 133   1        *optptr++ = DHCP_OPTION_SUBNET_MASK;
 134   1        *optptr++ = DHCP_OPTION_ROUTER;
 135   1        *optptr++ = DHCP_OPTION_DNS_SERVER;
 136   1        return optptr;
 137   1      }
 138          /*---------------------------------------------------------------------------*/
 139          static u8_t *
 140          add_end(u8_t *optptr)
 141          {
 142   1        *optptr++ = DHCP_OPTION_END;
 143   1        return optptr;
 144   1      }
 145          /*---------------------------------------------------------------------------*/
 146          static void
 147          create_msg(register struct dhcp_msg *m)
 148          {
 149   1        m->op = DHCP_REQUEST;
 150   1        m->htype = DHCP_HTYPE_ETHERNET;
 151   1        m->hlen = s.mac_len;
 152   1        m->hops = 0;
 153   1        memcpy(m->xid, xid, sizeof(m->xid));
 154   1        m->secs = 0;
 155   1        m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
 156   1        /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
 157   1        memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
 158   1        memset(m->yiaddr, 0, sizeof(m->yiaddr));
 159   1        memset(m->siaddr, 0, sizeof(m->siaddr));
 160   1        memset(m->giaddr, 0, sizeof(m->giaddr));
 161   1        memcpy(m->chaddr, s.mac_addr, s.mac_len);
 162   1        memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
 163   1      #ifndef UIP_CONF_DHCP_LIGHT
 164   1        memset(m->sname, 0, sizeof(m->sname));
 165   1        memset(m->file, 0, sizeof(m->file));
 166   1      #endif
 167   1      
 168   1        memcpy(m->options, magic_cookie, sizeof(magic_cookie));
 169   1      }
 170          /*---------------------------------------------------------------------------*/
 171          static void
 172          send_discover(void)
 173          {
 174   1        u8_t *end;
 175   1        struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
 176   1      
 177   1        create_msg(m);
C51 COMPILER V9.00   DHCPC                                                                 02/08/2010 20:58:33 PAGE 4   

 178   1      
 179   1        end = add_msg_type(&m->options[4], DHCPDISCOVER);
 180   1        end = add_req_options(end);
 181   1        end = add_end(end);
 182   1      
 183   1        uip_send(uip_appdata, end - (u8_t *)uip_appdata);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -