36
36
import random
37
37
from typing import TYPE_CHECKING
38
38
39
- import dhcp4 .ps
40
- import lib .socket as socket
41
- from lib .ip4_address import Ip4Address
42
- from lib .logger import log
39
+ import pytcp .lib .socket as socket
40
+ from pytcp .dhcp4 .ps import (
41
+ DHCP4_MSG_DISCOVER ,
42
+ DHCP4_MSG_REQUEST ,
43
+ DHCP4_MSG_OFFER ,
44
+ DHCP4_MSG_ACK ,
45
+ DHCP4_OP_REQUEST ,
46
+ DHCP4_OPT_ROUTER ,
47
+ DHCP4_OPT_SUBNET_MASK ,
48
+ Dhcp4Packet ,
49
+ )
50
+ from pytcp .lib .ip4_address import Ip4Address
51
+ from pytcp .lib .logger import log
43
52
44
53
if TYPE_CHECKING :
45
- from lib .mac_address import MacAddress
54
+ from pytcp . lib .mac_address import MacAddress
46
55
47
56
48
57
class Dhcp4Client :
@@ -69,18 +78,18 @@ def fetch(self) -> tuple[str, str | None] | tuple[None, None]:
69
78
70
79
# Send DHCP Discover
71
80
s .send (
72
- dhcp4 . ps . Dhcp4Packet (
73
- dhcp_op = dhcp4 . ps . DHCP4_OP_REQUEST ,
81
+ Dhcp4Packet (
82
+ dhcp_op = DHCP4_OP_REQUEST ,
74
83
dhcp_xid = dhcp_xid ,
75
84
dhcp_ciaddr = Ip4Address ("0.0.0.0" ),
76
85
dhcp_yiaddr = Ip4Address ("0.0.0.0" ),
77
86
dhcp_siaddr = Ip4Address ("0.0.0.0" ),
78
87
dhcp_giaddr = Ip4Address ("0.0.0.0" ),
79
88
dhcp_chaddr = bytes (self ._mac_address ),
80
- dhcp_msg_type = dhcp4 . ps . DHCP4_MSG_DISCOVER ,
89
+ dhcp_msg_type = DHCP4_MSG_DISCOVER ,
81
90
dhcp_param_req_list = [
82
- dhcp4 . ps . DHCP4_OPT_SUBNET_MASK ,
83
- dhcp4 . ps . DHCP4_OPT_ROUTER ,
91
+ DHCP4_OPT_SUBNET_MASK ,
92
+ DHCP4_OPT_ROUTER ,
84
93
],
85
94
dhcp_host_name = "PyTCP" ,
86
95
).raw_packet
@@ -90,14 +99,14 @@ def fetch(self) -> tuple[str, str | None] | tuple[None, None]:
90
99
91
100
# Wait for DHCP Offer
92
101
try :
93
- dhcp_packet_rx = dhcp4 . ps . Dhcp4Packet (s .recv (timeout = 5 ))
102
+ dhcp_packet_rx = Dhcp4Packet (s .recv (timeout = 5 ))
94
103
except socket .ReceiveTimeout :
95
104
if __debug__ :
96
105
log ("dhcp4" , "Didn't receive DHCP Offer message - timeout" )
97
106
s .close ()
98
107
return None , None
99
108
100
- if dhcp_packet_rx .dhcp_msg_type != dhcp4 . ps . DHCP4_MSG_OFFER :
109
+ if dhcp_packet_rx .dhcp_msg_type != DHCP4_MSG_OFFER :
101
110
if __debug__ :
102
111
log (
103
112
"dhcp4" ,
@@ -122,20 +131,20 @@ def fetch(self) -> tuple[str, str | None] | tuple[None, None]:
122
131
123
132
# Send DHCP Request
124
133
s .send (
125
- dhcp4 . ps . Dhcp4Packet (
126
- dhcp_op = dhcp4 . ps . DHCP4_OP_REQUEST ,
134
+ Dhcp4Packet (
135
+ dhcp_op = DHCP4_OP_REQUEST ,
127
136
dhcp_xid = dhcp_xid ,
128
137
dhcp_ciaddr = Ip4Address ("0.0.0.0" ),
129
138
dhcp_yiaddr = Ip4Address ("0.0.0.0" ),
130
139
dhcp_siaddr = Ip4Address ("0.0.0.0" ),
131
140
dhcp_giaddr = Ip4Address ("0.0.0.0" ),
132
141
dhcp_chaddr = bytes (self ._mac_address ),
133
- dhcp_msg_type = dhcp4 . ps . DHCP4_MSG_REQUEST ,
142
+ dhcp_msg_type = DHCP4_MSG_REQUEST ,
134
143
dhcp_srv_id = dhcp_srv_id ,
135
144
dhcp_req_ip_addr = dhcp_yiaddr ,
136
145
dhcp_param_req_list = [
137
- dhcp4 . ps . DHCP4_OPT_SUBNET_MASK ,
138
- dhcp4 . ps . DHCP4_OPT_ROUTER ,
146
+ DHCP4_OPT_SUBNET_MASK ,
147
+ DHCP4_OPT_ROUTER ,
139
148
],
140
149
dhcp_host_name = "PyTCP" ,
141
150
).raw_packet
@@ -150,14 +159,14 @@ def fetch(self) -> tuple[str, str | None] | tuple[None, None]:
150
159
151
160
# Wait for DHCP Ack
152
161
try :
153
- dhcp_packet_rx = dhcp4 . ps . Dhcp4Packet (s .recv (timeout = 5 ))
162
+ dhcp_packet_rx = Dhcp4Packet (s .recv (timeout = 5 ))
154
163
except socket .ReceiveTimeout :
155
164
if __debug__ :
156
165
log ("dhcp4" , "Didn't receive DHCP ACK message - timeout" )
157
166
s .close ()
158
167
return None , None
159
168
160
- if dhcp_packet_rx .dhcp_msg_type != dhcp4 . ps . DHCP4_MSG_ACK :
169
+ if dhcp_packet_rx .dhcp_msg_type != DHCP4_MSG_ACK :
161
170
if __debug__ :
162
171
log (
163
172
"dhcp4" ,
0 commit comments