VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (22 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/Dhcp4Dxe/Dhcp4Option.c

    r85718 r99404  
    1414/// DHCP_OPTION_FORMAT structure.
    1515///
    16 DHCP_OPTION_FORMAT DhcpOptionFormats[] = {
    17   {DHCP4_TAG_NETMASK,        DHCP_OPTION_IP,     1, 1  , TRUE},
    18   {DHCP4_TAG_TIME_OFFSET,    DHCP_OPTION_INT32,  1, 1  , FALSE},
    19   {DHCP4_TAG_ROUTER,         DHCP_OPTION_IP,     1, -1 , TRUE},
    20   {DHCP4_TAG_TIME_SERVER,    DHCP_OPTION_IP,     1, -1 , FALSE},
    21   {DHCP4_TAG_NAME_SERVER,    DHCP_OPTION_IP,     1, -1 , FALSE},
    22   {DHCP4_TAG_DNS_SERVER,     DHCP_OPTION_IP,     1, -1 , FALSE},
    23   {DHCP4_TAG_LOG_SERVER,     DHCP_OPTION_IP,     1, -1 , FALSE},
    24   {DHCP4_TAG_COOKIE_SERVER,  DHCP_OPTION_IP,     1, -1 , FALSE},
    25   {DHCP4_TAG_LPR_SERVER,     DHCP_OPTION_IP,     1, -1 , FALSE},
    26   {DHCP4_TAG_IMPRESS_SERVER, DHCP_OPTION_IP,     1, -1 , FALSE},
    27   {DHCP4_TAG_RL_SERVER,      DHCP_OPTION_IP,     1, -1 , FALSE},
    28   {DHCP4_TAG_HOSTNAME,       DHCP_OPTION_INT8,   1, -1 , FALSE},
    29   {DHCP4_TAG_BOOTFILE_LEN,   DHCP_OPTION_INT16,  1, 1  , FALSE},
    30   {DHCP4_TAG_DUMP,           DHCP_OPTION_INT8,   1, -1 , FALSE},
    31   {DHCP4_TAG_DOMAINNAME,     DHCP_OPTION_INT8,   1, -1 , FALSE},
    32   {DHCP4_TAG_SWAP_SERVER,    DHCP_OPTION_IP,     1, 1  , FALSE},
    33   {DHCP4_TAG_ROOTPATH,       DHCP_OPTION_INT8,   1, -1 , FALSE},
    34   {DHCP4_TAG_EXTEND_PATH,    DHCP_OPTION_INT8,   1, -1 , FALSE},
    35 
    36   {DHCP4_TAG_IPFORWARD,      DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    37   {DHCP4_TAG_NONLOCAL_SRR,   DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    38   {DHCP4_TAG_POLICY_SRR,     DHCP_OPTION_IPPAIR, 1, -1 , FALSE},
    39   {DHCP4_TAG_EMTU,           DHCP_OPTION_INT16,  1, 1  , FALSE},
    40   {DHCP4_TAG_TTL,            DHCP_OPTION_INT8,   1, 1  , FALSE},
    41   {DHCP4_TAG_PATHMTU_AGE,    DHCP_OPTION_INT32,  1, 1  , FALSE},
    42   {DHCP4_TAG_PATHMTU_PLATEAU,DHCP_OPTION_INT16,  1, -1 , FALSE},
    43 
    44   {DHCP4_TAG_IFMTU,          DHCP_OPTION_INT16,  1, 1  , FALSE},
    45   {DHCP4_TAG_SUBNET_LOCAL,   DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    46   {DHCP4_TAG_BROADCAST,      DHCP_OPTION_IP,     1, 1  , FALSE},
    47   {DHCP4_TAG_DISCOVER_MASK,  DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    48   {DHCP4_TAG_SUPPLY_MASK,    DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    49   {DHCP4_TAG_DISCOVER_ROUTE, DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    50   {DHCP4_TAG_ROUTER_SOLICIT, DHCP_OPTION_IP,     1, 1  , FALSE},
    51   {DHCP4_TAG_STATIC_ROUTE,   DHCP_OPTION_IPPAIR, 1, -1 , FALSE},
    52 
    53   {DHCP4_TAG_TRAILER,        DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    54   {DHCP4_TAG_ARPAGE,         DHCP_OPTION_INT32,  1, 1  , FALSE},
    55   {DHCP4_TAG_ETHER_ENCAP,    DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    56 
    57   {DHCP4_TAG_TCP_TTL,        DHCP_OPTION_INT8,   1, 1  , FALSE},
    58   {DHCP4_TAG_KEEP_INTERVAL,  DHCP_OPTION_INT32,  1, 1  , FALSE},
    59   {DHCP4_TAG_KEEP_GARBAGE,   DHCP_OPTION_SWITCH, 1, 1  , FALSE},
    60 
    61   {DHCP4_TAG_NIS_DOMAIN,     DHCP_OPTION_INT8,   1, -1 , FALSE},
    62   {DHCP4_TAG_NIS_SERVER,     DHCP_OPTION_IP,     1, -1 , FALSE},
    63   {DHCP4_TAG_NTP_SERVER,     DHCP_OPTION_IP,     1, -1 , FALSE},
    64   {DHCP4_TAG_VENDOR,         DHCP_OPTION_INT8,   1, -1 , FALSE},
    65   {DHCP4_TAG_NBNS,           DHCP_OPTION_IP,     1, -1 , FALSE},
    66   {DHCP4_TAG_NBDD,           DHCP_OPTION_IP,     1, -1 , FALSE},
    67   {DHCP4_TAG_NBTYPE,         DHCP_OPTION_INT8,   1, 1  , FALSE},
    68   {DHCP4_TAG_NBSCOPE,        DHCP_OPTION_INT8,   1, -1 , FALSE},
    69   {DHCP4_TAG_XFONT,          DHCP_OPTION_IP,     1, -1 , FALSE},
    70   {DHCP4_TAG_XDM,            DHCP_OPTION_IP,     1, -1 , FALSE},
    71 
    72   {DHCP4_TAG_REQUEST_IP,     DHCP_OPTION_IP,     1, 1  , FALSE},
    73   {DHCP4_TAG_LEASE,          DHCP_OPTION_INT32,  1, 1  , TRUE},
    74   {DHCP4_TAG_OVERLOAD,       DHCP_OPTION_INT8,   1, 1  , TRUE},
    75   {DHCP4_TAG_MSG_TYPE,       DHCP_OPTION_INT8,   1, 1  , TRUE},
    76   {DHCP4_TAG_SERVER_ID,      DHCP_OPTION_IP,     1, 1  , TRUE},
    77   {DHCP4_TAG_PARA_LIST,      DHCP_OPTION_INT8,   1, -1 , FALSE},
    78   {DHCP4_TAG_MESSAGE,        DHCP_OPTION_INT8,   1, -1 , FALSE},
    79   {DHCP4_TAG_MAXMSG,         DHCP_OPTION_INT16,  1, 1  , FALSE},
    80   {DHCP4_TAG_T1,             DHCP_OPTION_INT32,  1, 1  , TRUE},
    81   {DHCP4_TAG_T2,             DHCP_OPTION_INT32,  1, 1  , TRUE},
    82   {DHCP4_TAG_VENDOR_CLASS_ID,DHCP_OPTION_INT8,   1, -1 , FALSE},
    83   {DHCP4_TAG_CLIENT_ID,      DHCP_OPTION_INT8,   2, -1 , FALSE},
    84 
    85   {DHCP4_TAG_NISPLUS,        DHCP_OPTION_INT8,   1, -1 , FALSE},
    86   {DHCP4_TAG_NISPLUS_SERVER, DHCP_OPTION_IP,     1, -1 , FALSE},
    87 
    88   {DHCP4_TAG_TFTP,           DHCP_OPTION_INT8,   1, -1 , FALSE},
    89   {DHCP4_TAG_BOOTFILE,       DHCP_OPTION_INT8,   1, -1 , FALSE},
    90 
    91   {DHCP4_TAG_MOBILEIP,       DHCP_OPTION_IP,     0, -1 , FALSE},
    92   {DHCP4_TAG_SMTP,           DHCP_OPTION_IP,     1, -1 , FALSE},
    93   {DHCP4_TAG_POP3,           DHCP_OPTION_IP,     1, -1 , FALSE},
    94   {DHCP4_TAG_NNTP,           DHCP_OPTION_IP,     1, -1 , FALSE},
    95   {DHCP4_TAG_WWW,            DHCP_OPTION_IP,     1, -1 , FALSE},
    96   {DHCP4_TAG_FINGER,         DHCP_OPTION_IP,     1, -1 , FALSE},
    97   {DHCP4_TAG_IRC,            DHCP_OPTION_IP,     1, -1 , FALSE},
    98   {DHCP4_TAG_STTALK,         DHCP_OPTION_IP,     1, -1 , FALSE},
    99   {DHCP4_TAG_STDA,           DHCP_OPTION_IP,     1, -1 , FALSE},
    100 
    101   {DHCP4_TAG_CLASSLESS_ROUTE,DHCP_OPTION_INT8,   5, -1 , FALSE},
     16DHCP_OPTION_FORMAT  DhcpOptionFormats[] = {
     17  { DHCP4_TAG_NETMASK,         DHCP_OPTION_IP,     1, 1,  TRUE  },
     18  { DHCP4_TAG_TIME_OFFSET,     DHCP_OPTION_INT32,  1, 1,  FALSE },
     19  { DHCP4_TAG_ROUTER,          DHCP_OPTION_IP,     1, -1, TRUE  },
     20  { DHCP4_TAG_TIME_SERVER,     DHCP_OPTION_IP,     1, -1, FALSE },
     21  { DHCP4_TAG_NAME_SERVER,     DHCP_OPTION_IP,     1, -1, FALSE },
     22  { DHCP4_TAG_DNS_SERVER,      DHCP_OPTION_IP,     1, -1, FALSE },
     23  { DHCP4_TAG_LOG_SERVER,      DHCP_OPTION_IP,     1, -1, FALSE },
     24  { DHCP4_TAG_COOKIE_SERVER,   DHCP_OPTION_IP,     1, -1, FALSE },
     25  { DHCP4_TAG_LPR_SERVER,      DHCP_OPTION_IP,     1, -1, FALSE },
     26  { DHCP4_TAG_IMPRESS_SERVER,  DHCP_OPTION_IP,     1, -1, FALSE },
     27  { DHCP4_TAG_RL_SERVER,       DHCP_OPTION_IP,     1, -1, FALSE },
     28  { DHCP4_TAG_HOSTNAME,        DHCP_OPTION_INT8,   1, -1, FALSE },
     29  { DHCP4_TAG_BOOTFILE_LEN,    DHCP_OPTION_INT16,  1, 1,  FALSE },
     30  { DHCP4_TAG_DUMP,            DHCP_OPTION_INT8,   1, -1, FALSE },
     31  { DHCP4_TAG_DOMAINNAME,      DHCP_OPTION_INT8,   1, -1, FALSE },
     32  { DHCP4_TAG_SWAP_SERVER,     DHCP_OPTION_IP,     1, 1,  FALSE },
     33  { DHCP4_TAG_ROOTPATH,        DHCP_OPTION_INT8,   1, -1, FALSE },
     34  { DHCP4_TAG_EXTEND_PATH,     DHCP_OPTION_INT8,   1, -1, FALSE },
     35
     36  { DHCP4_TAG_IPFORWARD,       DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     37  { DHCP4_TAG_NONLOCAL_SRR,    DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     38  { DHCP4_TAG_POLICY_SRR,      DHCP_OPTION_IPPAIR, 1, -1, FALSE },
     39  { DHCP4_TAG_EMTU,            DHCP_OPTION_INT16,  1, 1,  FALSE },
     40  { DHCP4_TAG_TTL,             DHCP_OPTION_INT8,   1, 1,  FALSE },
     41  { DHCP4_TAG_PATHMTU_AGE,     DHCP_OPTION_INT32,  1, 1,  FALSE },
     42  { DHCP4_TAG_PATHMTU_PLATEAU, DHCP_OPTION_INT16,  1, -1, FALSE },
     43
     44  { DHCP4_TAG_IFMTU,           DHCP_OPTION_INT16,  1, 1,  FALSE },
     45  { DHCP4_TAG_SUBNET_LOCAL,    DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     46  { DHCP4_TAG_BROADCAST,       DHCP_OPTION_IP,     1, 1,  FALSE },
     47  { DHCP4_TAG_DISCOVER_MASK,   DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     48  { DHCP4_TAG_SUPPLY_MASK,     DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     49  { DHCP4_TAG_DISCOVER_ROUTE,  DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     50  { DHCP4_TAG_ROUTER_SOLICIT,  DHCP_OPTION_IP,     1, 1,  FALSE },
     51  { DHCP4_TAG_STATIC_ROUTE,    DHCP_OPTION_IPPAIR, 1, -1, FALSE },
     52
     53  { DHCP4_TAG_TRAILER,         DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     54  { DHCP4_TAG_ARPAGE,          DHCP_OPTION_INT32,  1, 1,  FALSE },
     55  { DHCP4_TAG_ETHER_ENCAP,     DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     56
     57  { DHCP4_TAG_TCP_TTL,         DHCP_OPTION_INT8,   1, 1,  FALSE },
     58  { DHCP4_TAG_KEEP_INTERVAL,   DHCP_OPTION_INT32,  1, 1,  FALSE },
     59  { DHCP4_TAG_KEEP_GARBAGE,    DHCP_OPTION_SWITCH, 1, 1,  FALSE },
     60
     61  { DHCP4_TAG_NIS_DOMAIN,      DHCP_OPTION_INT8,   1, -1, FALSE },
     62  { DHCP4_TAG_NIS_SERVER,      DHCP_OPTION_IP,     1, -1, FALSE },
     63  { DHCP4_TAG_NTP_SERVER,      DHCP_OPTION_IP,     1, -1, FALSE },
     64  { DHCP4_TAG_VENDOR,          DHCP_OPTION_INT8,   1, -1, FALSE },
     65  { DHCP4_TAG_NBNS,            DHCP_OPTION_IP,     1, -1, FALSE },
     66  { DHCP4_TAG_NBDD,            DHCP_OPTION_IP,     1, -1, FALSE },
     67  { DHCP4_TAG_NBTYPE,          DHCP_OPTION_INT8,   1, 1,  FALSE },
     68  { DHCP4_TAG_NBSCOPE,         DHCP_OPTION_INT8,   1, -1, FALSE },
     69  { DHCP4_TAG_XFONT,           DHCP_OPTION_IP,     1, -1, FALSE },
     70  { DHCP4_TAG_XDM,             DHCP_OPTION_IP,     1, -1, FALSE },
     71
     72  { DHCP4_TAG_REQUEST_IP,      DHCP_OPTION_IP,     1, 1,  FALSE },
     73  { DHCP4_TAG_LEASE,           DHCP_OPTION_INT32,  1, 1,  TRUE  },
     74  { DHCP4_TAG_OVERLOAD,        DHCP_OPTION_INT8,   1, 1,  TRUE  },
     75  { DHCP4_TAG_MSG_TYPE,        DHCP_OPTION_INT8,   1, 1,  TRUE  },
     76  { DHCP4_TAG_SERVER_ID,       DHCP_OPTION_IP,     1, 1,  TRUE  },
     77  { DHCP4_TAG_PARA_LIST,       DHCP_OPTION_INT8,   1, -1, FALSE },
     78  { DHCP4_TAG_MESSAGE,         DHCP_OPTION_INT8,   1, -1, FALSE },
     79  { DHCP4_TAG_MAXMSG,          DHCP_OPTION_INT16,  1, 1,  FALSE },
     80  { DHCP4_TAG_T1,              DHCP_OPTION_INT32,  1, 1,  TRUE  },
     81  { DHCP4_TAG_T2,              DHCP_OPTION_INT32,  1, 1,  TRUE  },
     82  { DHCP4_TAG_VENDOR_CLASS_ID, DHCP_OPTION_INT8,   1, -1, FALSE },
     83  { DHCP4_TAG_CLIENT_ID,       DHCP_OPTION_INT8,   2, -1, FALSE },
     84
     85  { DHCP4_TAG_NISPLUS,         DHCP_OPTION_INT8,   1, -1, FALSE },
     86  { DHCP4_TAG_NISPLUS_SERVER,  DHCP_OPTION_IP,     1, -1, FALSE },
     87
     88  { DHCP4_TAG_TFTP,            DHCP_OPTION_INT8,   1, -1, FALSE },
     89  { DHCP4_TAG_BOOTFILE,        DHCP_OPTION_INT8,   1, -1, FALSE },
     90
     91  { DHCP4_TAG_MOBILEIP,        DHCP_OPTION_IP,     0, -1, FALSE },
     92  { DHCP4_TAG_SMTP,            DHCP_OPTION_IP,     1, -1, FALSE },
     93  { DHCP4_TAG_POP3,            DHCP_OPTION_IP,     1, -1, FALSE },
     94  { DHCP4_TAG_NNTP,            DHCP_OPTION_IP,     1, -1, FALSE },
     95  { DHCP4_TAG_WWW,             DHCP_OPTION_IP,     1, -1, FALSE },
     96  { DHCP4_TAG_FINGER,          DHCP_OPTION_IP,     1, -1, FALSE },
     97  { DHCP4_TAG_IRC,             DHCP_OPTION_IP,     1, -1, FALSE },
     98  { DHCP4_TAG_STTALK,          DHCP_OPTION_IP,     1, -1, FALSE },
     99  { DHCP4_TAG_STDA,            DHCP_OPTION_IP,     1, -1, FALSE },
     100
     101  { DHCP4_TAG_CLASSLESS_ROUTE, DHCP_OPTION_INT8,   5, -1, FALSE },
    102102};
    103 
    104103
    105104/**
     
    114113DHCP_OPTION_FORMAT *
    115114DhcpFindOptionFormat (
    116   IN UINT8                  Tag
    117   )
    118 {
    119   INTN                      Left;
    120   INTN                      Right;
    121   INTN                      Middle;
     115  IN UINT8  Tag
     116  )
     117{
     118  INTN  Left;
     119  INTN  Right;
     120  INTN  Middle;
    122121
    123122  Left  = 0;
     
    134133      Right = Middle - 1;
    135134    } else {
    136       Left  = Middle + 1;
     135      Left = Middle + 1;
    137136    }
    138137  }
     
    140139  return NULL;
    141140}
    142 
    143141
    144142/**
     
    155153BOOLEAN
    156154DhcpOptionIsValid (
    157   IN DHCP_OPTION_FORMAT     *Format,
    158   IN UINT8                  *OptValue,
    159   IN INTN                   Len
    160   )
    161 {
    162   INTN                      Unit;
    163   INTN                      Occur;
    164   INTN                      Index;
     155  IN DHCP_OPTION_FORMAT  *Format,
     156  IN UINT8               *OptValue,
     157  IN INTN                Len
     158  )
     159{
     160  INTN  Unit;
     161  INTN  Occur;
     162  INTN  Index;
    165163
    166164  Unit = 0;
    167165
    168166  switch (Format->Type) {
    169   case DHCP_OPTION_SWITCH:
    170   case DHCP_OPTION_INT8:
    171     Unit = 1;
    172     break;
    173 
    174   case DHCP_OPTION_INT16:
    175     Unit = 2;
    176     break;
    177 
    178   case DHCP_OPTION_INT32:
    179   case DHCP_OPTION_IP:
    180     Unit = 4;
    181     break;
    182 
    183   case DHCP_OPTION_IPPAIR:
    184     Unit = 8;
    185     break;
     167    case DHCP_OPTION_SWITCH:
     168    case DHCP_OPTION_INT8:
     169      Unit = 1;
     170      break;
     171
     172    case DHCP_OPTION_INT16:
     173      Unit = 2;
     174      break;
     175
     176    case DHCP_OPTION_INT32:
     177    case DHCP_OPTION_IP:
     178      Unit = 4;
     179      break;
     180
     181    case DHCP_OPTION_IPPAIR:
     182      Unit = 8;
     183      break;
    186184  }
    187185
     
    202200  if (((Format->MinOccur != -1) && (Occur < Format->MinOccur)) ||
    203201      ((Format->MaxOccur != -1) && (Occur > Format->MaxOccur))
    204       ) {
     202      )
     203  {
    205204    return FALSE;
    206205  }
     
    220219}
    221220
    222 
    223221/**
    224222  Extract the client interested options, all the parameters are
     
    236234EFI_STATUS
    237235DhcpGetParameter (
    238   IN  UINT8                  Tag,
    239   IN  INTN                   Len,
    240   IN  UINT8                  *Data,
    241   OUT DHCP_PARAMETER         *Para
     236  IN  UINT8           Tag,
     237  IN  INTN            Len,
     238  IN  UINT8           *Data,
     239  OUT DHCP_PARAMETER  *Para
    242240  )
    243241{
    244242  switch (Tag) {
    245   case DHCP4_TAG_NETMASK:
    246     Para->NetMask = NetGetUint32 (Data);
    247     break;
    248 
    249   case DHCP4_TAG_ROUTER:
    250     //
    251     // Return the first router to consumer which is the preferred one
    252     //
    253     Para->Router = NetGetUint32 (Data);
    254     break;
    255 
    256   case DHCP4_TAG_LEASE:
    257     Para->Lease = NetGetUint32 (Data);
    258     break;
    259 
    260   case DHCP4_TAG_OVERLOAD:
    261     Para->Overload = *Data;
    262 
    263     if ((Para->Overload < 1) || (Para->Overload > 3)) {
    264       return EFI_INVALID_PARAMETER;
    265     }
    266     break;
    267 
    268   case DHCP4_TAG_MSG_TYPE:
    269     Para->DhcpType = *Data;
    270 
    271     if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) {
    272       return EFI_INVALID_PARAMETER;
    273     }
    274     break;
    275 
    276   case DHCP4_TAG_SERVER_ID:
    277     Para->ServerId = NetGetUint32 (Data);
    278     break;
    279 
    280   case DHCP4_TAG_T1:
    281     Para->T1 = NetGetUint32 (Data);
    282     break;
    283 
    284   case DHCP4_TAG_T2:
    285     Para->T2 = NetGetUint32 (Data);
    286     break;
     243    case DHCP4_TAG_NETMASK:
     244      Para->NetMask = NetGetUint32 (Data);
     245      break;
     246
     247    case DHCP4_TAG_ROUTER:
     248      //
     249      // Return the first router to consumer which is the preferred one
     250      //
     251      Para->Router = NetGetUint32 (Data);
     252      break;
     253
     254    case DHCP4_TAG_LEASE:
     255      Para->Lease = NetGetUint32 (Data);
     256      break;
     257
     258    case DHCP4_TAG_OVERLOAD:
     259      Para->Overload = *Data;
     260
     261      if ((Para->Overload < 1) || (Para->Overload > 3)) {
     262        return EFI_INVALID_PARAMETER;
     263      }
     264
     265      break;
     266
     267    case DHCP4_TAG_MSG_TYPE:
     268      Para->DhcpType = *Data;
     269
     270      if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) {
     271        return EFI_INVALID_PARAMETER;
     272      }
     273
     274      break;
     275
     276    case DHCP4_TAG_SERVER_ID:
     277      Para->ServerId = NetGetUint32 (Data);
     278      break;
     279
     280    case DHCP4_TAG_T1:
     281      Para->T1 = NetGetUint32 (Data);
     282      break;
     283
     284    case DHCP4_TAG_T2:
     285      Para->T2 = NetGetUint32 (Data);
     286      break;
    287287  }
    288288
    289289  return EFI_SUCCESS;
    290290}
    291 
    292291
    293292/**
     
    309308EFI_STATUS
    310309DhcpIterateBufferOptions (
    311   IN  UINT8                 *Buffer,
    312   IN  INTN                  BufLen,
    313   IN  DHCP_CHECK_OPTION     Check             OPTIONAL,
    314   IN  VOID                  *Context,
    315   OUT UINT8                 *Overload         OPTIONAL
    316   )
    317 {
    318   INTN                      Cur;
    319   UINT8                     Tag;
    320   UINT8                     Len;
     310  IN  UINT8              *Buffer,
     311  IN  INTN               BufLen,
     312  IN  DHCP_CHECK_OPTION  Check             OPTIONAL,
     313  IN  VOID               *Context,
     314  OUT UINT8              *Overload         OPTIONAL
     315  )
     316{
     317  INTN   Cur;
     318  UINT8  Tag;
     319  UINT8  Len;
    321320
    322321  Cur = 0;
     
    365364}
    366365
    367 
    368366/**
    369367  Iterate through a DHCP message to visit each option. First inspect
     
    383381EFI_STATUS
    384382DhcpIterateOptions (
    385   IN  EFI_DHCP4_PACKET      *Packet,
    386   IN  DHCP_CHECK_OPTION     Check         OPTIONAL,
    387   IN  VOID                  *Context
    388   )
    389 {
    390   EFI_STATUS                Status;
    391   UINT8                     Overload;
     383  IN  EFI_DHCP4_PACKET   *Packet,
     384  IN  DHCP_CHECK_OPTION  Check         OPTIONAL,
     385  IN  VOID               *Context
     386  )
     387{
     388  EFI_STATUS  Status;
     389  UINT8       Overload;
    392390
    393391  Overload = 0;
    394392
    395   Status   = DhcpIterateBufferOptions (
    396                Packet->Dhcp4.Option,
    397                Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32),
    398                Check,
    399                Context,
    400                &Overload
    401                );
     393  Status = DhcpIterateBufferOptions (
     394             Packet->Dhcp4.Option,
     395             Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32),
     396             Check,
     397             Context,
     398             &Overload
     399             );
    402400
    403401  if (EFI_ERROR (Status)) {
     
    407405  if ((Overload == DHCP_OVERLOAD_FILENAME) || (Overload == DHCP_OVERLOAD_BOTH)) {
    408406    Status = DhcpIterateBufferOptions (
    409                (UINT8 *) Packet->Dhcp4.Header.BootFileName,
     407               (UINT8 *)Packet->Dhcp4.Header.BootFileName,
    410408               128,
    411409               Check,
     
    421419  if ((Overload == DHCP_OVERLOAD_SVRNAME) || (Overload == DHCP_OVERLOAD_BOTH)) {
    422420    Status = DhcpIterateBufferOptions (
    423                (UINT8 *) Packet->Dhcp4.Header.ServerName,
     421               (UINT8 *)Packet->Dhcp4.Header.ServerName,
    424422               64,
    425423               Check,
     
    436434}
    437435
    438 
    439436/**
    440437  Call back function to DhcpIterateOptions to compute each option's
     
    453450EFI_STATUS
    454451DhcpGetOptionLen (
    455   IN UINT8                  Tag,
    456   IN UINT8                  Len,
    457   IN UINT8                  *Data,
    458   IN VOID                   *Context
    459   )
    460 {
    461   DHCP_OPTION_COUNT         *OpCount;
    462 
    463   OpCount             = (DHCP_OPTION_COUNT *) Context;
    464   OpCount[Tag].Offset = (UINT16) (OpCount[Tag].Offset + Len);
     452  IN UINT8  Tag,
     453  IN UINT8  Len,
     454  IN UINT8  *Data,
     455  IN VOID   *Context
     456  )
     457{
     458  DHCP_OPTION_COUNT  *OpCount;
     459
     460  OpCount             = (DHCP_OPTION_COUNT *)Context;
     461  OpCount[Tag].Offset = (UINT16)(OpCount[Tag].Offset + Len);
    465462
    466463  return EFI_SUCCESS;
    467464}
    468 
    469465
    470466/**
     
    483479EFI_STATUS
    484480DhcpFillOption (
    485   IN UINT8                  Tag,
    486   IN UINT8                  Len,
    487   IN UINT8                  *Data,
    488   IN VOID                   *Context
    489   )
    490 {
    491   DHCP_OPTION_CONTEXT       *OptContext;
    492   DHCP_OPTION_COUNT         *OptCount;
    493   DHCP_OPTION               *Options;
    494   UINT8                     *Buf;
    495   UINT8                     Index;
    496 
    497   OptContext  = (DHCP_OPTION_CONTEXT *) Context;
    498 
    499   OptCount    = OptContext->OpCount;
    500   Index       = OptCount[Tag].Index;
    501   Options     = OptContext->Options;
    502   Buf         = OptContext->Buf;
     481  IN UINT8  Tag,
     482  IN UINT8  Len,
     483  IN UINT8  *Data,
     484  IN VOID   *Context
     485  )
     486{
     487  DHCP_OPTION_CONTEXT  *OptContext;
     488  DHCP_OPTION_COUNT    *OptCount;
     489  DHCP_OPTION          *Options;
     490  UINT8                *Buf;
     491  UINT8                Index;
     492
     493  OptContext = (DHCP_OPTION_CONTEXT *)Context;
     494
     495  OptCount = OptContext->OpCount;
     496  Index    = OptCount[Tag].Index;
     497  Options  = OptContext->Options;
     498  Buf      = OptContext->Buf;
    503499
    504500  if (Options[Index].Data == NULL) {
     
    509505  CopyMem (Buf + OptCount[Tag].Offset, Data, Len);
    510506
    511   OptCount[Tag].Offset  = (UINT16) (OptCount[Tag].Offset + Len);
    512   Options[Index].Len    = (UINT16) (Options[Index].Len + Len);
     507  OptCount[Tag].Offset = (UINT16)(OptCount[Tag].Offset + Len);
     508  Options[Index].Len   = (UINT16)(Options[Index].Len + Len);
    513509  return EFI_SUCCESS;
    514510}
    515 
    516511
    517512/**
     
    545540EFI_STATUS
    546541DhcpParseOption (
    547   IN  EFI_DHCP4_PACKET      *Packet,
    548   OUT INTN                  *Count,
    549   OUT DHCP_OPTION           **OptionPoint
    550   )
    551 {
    552   DHCP_OPTION_CONTEXT       Context;
    553   DHCP_OPTION               *Options;
    554   DHCP_OPTION_COUNT         *OptCount;
    555   EFI_STATUS                Status;
    556   UINT16                    TotalLen;
    557   INTN                      OptNum;
    558   INTN                      Index;
     542  IN  EFI_DHCP4_PACKET  *Packet,
     543  OUT INTN              *Count,
     544  OUT DHCP_OPTION       **OptionPoint
     545  )
     546{
     547  DHCP_OPTION_CONTEXT  Context;
     548  DHCP_OPTION          *Options;
     549  DHCP_OPTION_COUNT    *OptCount;
     550  EFI_STATUS           Status;
     551  UINT16               TotalLen;
     552  INTN                 OptNum;
     553  INTN                 Index;
    559554
    560555  ASSERT ((Count != NULL) && (OptionPoint != NULL));
     
    581576  // option value buffer to put the data.
    582577  //
    583   TotalLen  = 0;
    584   OptNum    = 0;
     578  TotalLen = 0;
     579  OptNum   = 0;
    585580
    586581  for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {
    587582    if (OptCount[Index].Offset != 0) {
    588       OptCount[Index].Index   = (UINT8) OptNum;
    589 
    590       TotalLen                = (UINT16) (TotalLen + OptCount[Index].Offset);
    591       OptCount[Index].Offset  = (UINT16) (TotalLen - OptCount[Index].Offset);
     583      OptCount[Index].Index = (UINT8)OptNum;
     584
     585      TotalLen               = (UINT16)(TotalLen + OptCount[Index].Offset);
     586      OptCount[Index].Offset = (UINT16)(TotalLen - OptCount[Index].Offset);
    592587
    593588      OptNum++;
     
    595590  }
    596591
    597   *Count        = OptNum;
    598   *OptionPoint  = NULL;
     592  *Count       = OptNum;
     593  *OptionPoint = NULL;
    599594
    600595  if (OptNum == 0) {
     
    606601  // continuous buffer to put all the options' data.
    607602  //
    608   Options = AllocateZeroPool ((UINTN) (OptNum * sizeof (DHCP_OPTION)) + TotalLen);
     603  Options = AllocateZeroPool ((UINTN)(OptNum * sizeof (DHCP_OPTION)) + TotalLen);
    609604
    610605  if (Options == NULL) {
     
    615610  Context.OpCount = OptCount;
    616611  Context.Options = Options;
    617   Context.Buf     = (UINT8 *) (Options + OptNum);
    618 
    619   Status          = DhcpIterateOptions (Packet, DhcpFillOption, &Context);
     612  Context.Buf     = (UINT8 *)(Options + OptNum);
     613
     614  Status = DhcpIterateOptions (Packet, DhcpFillOption, &Context);
    620615
    621616  if (EFI_ERROR (Status)) {
     
    631626}
    632627
    633 
    634628/**
    635629  Validate the packet's options. If necessary, allocate
     
    646640EFI_STATUS
    647641DhcpValidateOptions (
    648   IN  EFI_DHCP4_PACKET      *Packet,
    649   OUT DHCP_PARAMETER        **Para       OPTIONAL
    650   )
    651 {
    652   DHCP_PARAMETER            Parameter;
    653   DHCP_OPTION_FORMAT        *Format;
    654   DHCP_OPTION               *AllOption;
    655   DHCP_OPTION               *Option;
    656   EFI_STATUS                Status;
    657   BOOLEAN                   Updated;
    658   INTN                      Count;
    659   INTN                      Index;
     642  IN  EFI_DHCP4_PACKET  *Packet,
     643  OUT DHCP_PARAMETER    **Para       OPTIONAL
     644  )
     645{
     646  DHCP_PARAMETER      Parameter;
     647  DHCP_OPTION_FORMAT  *Format;
     648  DHCP_OPTION         *AllOption;
     649  DHCP_OPTION         *Option;
     650  EFI_STATUS          Status;
     651  BOOLEAN             Updated;
     652  INTN                Count;
     653  INTN                Index;
    660654
    661655  if (Para != NULL) {
     
    669663    return Status;
    670664  }
     665
    671666  ASSERT (AllOption != NULL);
    672667
     
    717712}
    718713
    719 
    720 
    721714/**
    722715  Append an option to the memory, if the option is longer than
     
    733726UINT8 *
    734727DhcpAppendOption (
    735   OUT UINT8                  *Buf,
    736   IN  UINT8                  Tag,
    737   IN  UINT16                 DataLen,
    738   IN  UINT8                  *Data
    739   )
    740 {
    741   INTN                      Index;
    742   INTN                      Len;
     728  OUT UINT8   *Buf,
     729  IN  UINT8   Tag,
     730  IN  UINT16  DataLen,
     731  IN  UINT8   *Data
     732  )
     733{
     734  INTN  Index;
     735  INTN  Len;
    743736
    744737  ASSERT (DataLen != 0);
    745738
    746739  for (Index = 0; Index < (DataLen + 254) / 255; Index++) {
    747     Len      = MIN (255, DataLen - Index * 255);
     740    Len = MIN (255, DataLen - Index * 255);
    748741
    749742    *(Buf++) = Tag;
    750     *(Buf++) = (UINT8) Len;
    751     CopyMem (Buf, Data + Index * 255, (UINTN) Len);
    752 
    753     Buf     += Len;
     743    *(Buf++) = (UINT8)Len;
     744    CopyMem (Buf, Data + Index * 255, (UINTN)Len);
     745
     746    Buf += Len;
    754747  }
    755748
    756749  return Buf;
    757750}
    758 
    759751
    760752/**
     
    777769EFI_STATUS
    778770DhcpBuild (
    779   IN  EFI_DHCP4_PACKET        *SeedPacket,
    780   IN  UINT32                  DeleteCount,
    781   IN  UINT8                   *DeleteList     OPTIONAL,
    782   IN  UINT32                  AppendCount,
    783   IN  EFI_DHCP4_PACKET_OPTION *AppendList[]   OPTIONAL,
    784   OUT EFI_DHCP4_PACKET        **NewPacket
    785   )
    786 {
    787   DHCP_OPTION               *Mark;
    788   DHCP_OPTION               *SeedOptions;
    789   EFI_DHCP4_PACKET          *Packet;
    790   EFI_STATUS                Status;
    791   INTN                      Count;
    792   UINT32                    Index;
    793   UINT32                    Len;
    794   UINT8                     *Buf;
     771  IN  EFI_DHCP4_PACKET         *SeedPacket,
     772  IN  UINT32                   DeleteCount,
     773  IN  UINT8                    *DeleteList     OPTIONAL,
     774  IN  UINT32                   AppendCount,
     775  IN  EFI_DHCP4_PACKET_OPTION  *AppendList[]   OPTIONAL,
     776  OUT EFI_DHCP4_PACKET         **NewPacket
     777  )
     778{
     779  DHCP_OPTION       *Mark;
     780  DHCP_OPTION       *SeedOptions;
     781  EFI_DHCP4_PACKET  *Packet;
     782  EFI_STATUS        Status;
     783  INTN              Count;
     784  UINT32            Index;
     785  UINT32            Len;
     786  UINT8             *Buf;
    795787
    796788  //
     
    805797
    806798  for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {
    807     Mark[Index].Tag = (UINT8) Index;
     799    Mark[Index].Tag = (UINT8)Index;
    808800    Mark[Index].Len = 0;
    809801  }
     
    821813
    822814  if (SeedOptions != NULL) {
    823     for (Index = 0; Index < (UINT32) Count; Index++) {
     815    for (Index = 0; Index < (UINT32)Count; Index++) {
    824816      Mark[SeedOptions[Index].Tag] = SeedOptions[Index];
    825817    }
     
    855847  }
    856848
    857   Status  = EFI_OUT_OF_RESOURCES;
    858   Packet  = (EFI_DHCP4_PACKET *) AllocatePool (Len);
     849  Status = EFI_OUT_OF_RESOURCES;
     850  Packet = (EFI_DHCP4_PACKET *)AllocatePool (Len);
    859851
    860852  if (Packet == NULL) {
     
    862854  }
    863855
    864   Packet->Size         = Len;
    865   Packet->Length       = 0;
     856  Packet->Size   = Len;
     857  Packet->Length = 0;
    866858  CopyMem (&Packet->Dhcp4.Header, &SeedPacket->Dhcp4.Header, sizeof (Packet->Dhcp4.Header));
    867   Packet->Dhcp4.Magik  = DHCP_OPTION_MAGIC;
    868   Buf                  = Packet->Dhcp4.Option;
     859  Packet->Dhcp4.Magik = DHCP_OPTION_MAGIC;
     860  Buf                 = Packet->Dhcp4.Option;
    869861
    870862  for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) {
     
    874866  }
    875867
    876   *(Buf++)        = DHCP4_TAG_EOP;
    877   Packet->Length  = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)
    878                       + (UINT32) (Buf - Packet->Dhcp4.Option);
    879 
    880   *NewPacket      = Packet;
    881   Status          = EFI_SUCCESS;
     868  *(Buf++)       = DHCP4_TAG_EOP;
     869  Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)
     870                   + (UINT32)(Buf - Packet->Dhcp4.Option);
     871
     872  *NewPacket = Packet;
     873  Status     = EFI_SUCCESS;
    882874
    883875ON_ERROR:
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette