summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.h
blob: 1da95f94a799148965d59f56f1201815590d72b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/** @file

Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Module Name:

  Dhcp4Io.h

Abstract:

  The DHCP4 protocol implementation.


**/

#ifndef __EFI_DHCP4_IO_H__
#define __EFI_DHCP4_IO_H__

#include <PiDxe.h>

#include <Protocol/ServiceBinding.h>

#include <Library/NetLib.h>
#include <Library/UdpIoLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>


enum {
  DHCP_WAIT_OFFER         = 3,              // Time to wait the offers
  DHCP_DEFAULT_LEASE      = 7 *24 *60 *60,  // Seven days as default.
  DHCP_SERVER_PORT        = 67,
  DHCP_CLIENT_PORT        = 68,

  //
  // BOOTP header "op" field
  //
  BOOTP_REQUEST           = 1,
  BOOTP_REPLY             = 2,

  //
  // DHCP message types
  //
  DHCP_MSG_DISCOVER       = 1,
  DHCP_MSG_OFFER          = 2,
  DHCP_MSG_REQUEST        = 3,
  DHCP_MSG_DECLINE        = 4,
  DHCP_MSG_ACK            = 5,
  DHCP_MSG_NAK            = 6,
  DHCP_MSG_RELEASE        = 7,
  DHCP_MSG_INFORM         = 8,

  //
  // DHCP notify user type
  //
  DHCP_NOTIFY_COMPLETION  = 1,
  DHCP_NOTIFY_RENEWREBIND,
  DHCP_NOTIFY_ALL,
};

#define DHCP_IS_BOOTP(Parameter)  (((Parameter) == NULL) || ((Parameter)->DhcpType == 0))

#define DHCP_CONNECTED(State)     \
  (((State) == Dhcp4Bound) || ((State) == (Dhcp4Renewing)) || ((State) == Dhcp4Rebinding))

EFI_STATUS
DhcpSetState (
  IN DHCP_SERVICE           *DhcpSb,
  IN INTN                   State,
  IN BOOLEAN                CallUser
  );

EFI_STATUS
DhcpSendMessage (
  IN DHCP_SERVICE           *DhcpSb,
  IN EFI_DHCP4_PACKET       *Seed,
  IN DHCP_PARAMETER         *Para,
  IN UINT8                  Type,
  IN UINT8                  *Msg
  );

VOID
EFIAPI
DhcpOnTimerTick (
  IN EFI_EVENT              Event,
  IN VOID                   *Context
  );

VOID
DhcpInput (
  NET_BUF                   *UdpPacket,
  UDP_POINTS                *Points,
  EFI_STATUS                IoStatus,
  VOID                      *Context
  );

EFI_STATUS
DhcpInitRequest (
  IN DHCP_SERVICE           *DhcpSb
  );

VOID
DhcpCleanLease (
  IN DHCP_SERVICE           *DhcpSb
  );

#endif