11package w5500
22
33import (
4- "fmt "
4+ "errors "
55 "net"
66 "net/netip"
77 "os"
@@ -19,11 +19,6 @@ type socket struct {
1919 closed bool
2020}
2121
22- func (s * socket ) setSockn (n int ) * socket {
23- s .sockn = uint8 (n )
24- return s
25- }
26-
2722func (s * socket ) setProtocol (proto byte ) * socket {
2823 s .protocol = proto
2924 return s
@@ -71,7 +66,7 @@ func (d *Device) Socket(domain int, stype int, protocol int) (int, error) {
7166 case stype == netdev .SOCK_STREAM && protocol == netdev .IPPROTO_TCP :
7267 case stype == netdev .SOCK_DGRAM && protocol == netdev .IPPROTO_UDP :
7368 default :
74- return - 1 , fmt . Errorf ("unsupported socket type %d and protocol %d" , stype , protocol )
69+ return - 1 , errors . New ("unsupported combination of socket type and protocol" )
7570 }
7671
7772 var proto byte
@@ -105,9 +100,6 @@ func (d *Device) openSocket(sockn uint8, proto byte) {
105100func (d * Device ) Bind (sockfd int , ip netip.AddrPort ) error {
106101 // The IP address is irrelevant. The configured ip will always be used.
107102 port := ip .Port ()
108- if port < 1 || port > 65535 {
109- return fmt .Errorf ("invalid port number: %d" , port )
110- }
111103
112104 d .mu .Lock ()
113105 defer d .mu .Unlock ()
@@ -118,7 +110,7 @@ func (d *Device) Bind(sockfd int, ip netip.AddrPort) error {
118110 }
119111
120112 if err = d .bindSocket (sock .sockn , port ); err != nil {
121- return fmt . Errorf ("could not set socket port: %w" , err )
113+ return errors . New ("could not set socket port: " + err . Error () )
122114 }
123115
124116 sock .setPort (port )
@@ -129,7 +121,7 @@ func (d *Device) bindSocket(sockn uint8, port uint16) error {
129121 d .writeUint16 (sockSrcPort , sockAddr (sockn ), port )
130122 d .socketSendCmd (sockn , sockCmdOpen )
131123 if d .sockStatus (sockn ) == sockStatusClosed {
132- return fmt . Errorf ("socket %d is closed after binding" , sockn )
124+ return errors . New ("socket is closed after binding" )
133125 }
134126 return nil
135127}
@@ -150,16 +142,13 @@ func (d *Device) Connect(sockfd int, host string, ip netip.AddrPort) error {
150142 var err error
151143 destIP , err = d .GetHostByName (host )
152144 if err != nil {
153- return fmt . Errorf ("could not resolve host %s: %w" , host , err )
145+ return errors . New ("could not resolve host " + host + ":" + err . Error () )
154146 }
155147 }
156148 if ! destIP .IsValid () || ! destIP .Is4 () {
157- return fmt . Errorf ("invalid destination IP address: %s" , destIP )
149+ return errors . New ("invalid destination IP address: " + destIP . String () )
158150 }
159151 port := ip .Port ()
160- if port < 1 || port > 65535 {
161- return fmt .Errorf ("invalid destination port number: %d" , port )
162- }
163152
164153 d .mu .Lock ()
165154 defer d .mu .Unlock ()
@@ -188,19 +177,19 @@ func (d *Device) Listen(sockfd int, _ int) error {
188177 }
189178
190179 if sock .protocol != 1 { // Only TCP sockets can listen
191- return fmt . Errorf ( "socket %d is not a TCP socket", sockfd )
180+ return errors . New ( " not a TCP socket" )
192181 }
193182
194183 if err = d .listen (sock .sockn ); err != nil {
195- return fmt . Errorf ("could not send listen command: %w" , err )
184+ return errors . New ("could not send listen command: " + err . Error () )
196185 }
197186 return nil
198187}
199188
200189func (d * Device ) listen (sockn uint8 ) error {
201190 state := d .sockStatus (sockn )
202191 if state != sockStatusInit {
203- return fmt . Errorf ("socket %d is not in the initial state: got %d" , sockn , state )
192+ return errors . New ("socket is not in the initial state" )
204193 }
205194 d .socketSendCmd (sockn , sockCmdListen )
206195 return nil
@@ -213,7 +202,7 @@ func (d *Device) Accept(sockfd int) (int, netip.AddrPort, error) {
213202
214203 lsock , err := d .socket (sockfd )
215204 if err != nil {
216- return - 1 , netip.AddrPort {}, fmt . Errorf ("could not get socket: %w" , err )
205+ return - 1 , netip.AddrPort {}, errors . New ("could not get socket: " + err . Error () )
217206 }
218207
219208 if err = d .waitForEstablished (lsock .sockn ); err != nil {
@@ -231,10 +220,10 @@ func (d *Device) Accept(sockfd int) (int, netip.AddrPort, error) {
231220 // Rebind the listening socket to the local address and port and start listening.
232221 d .openSocket (lsock .sockn , lsock .protocol )
233222 if err = d .bindSocket (lsock .sockn , lsock .port ); err != nil {
234- return - 1 , netip.AddrPort {}, fmt . Errorf ("could not bind listening socket: %w" , err )
223+ return - 1 , netip.AddrPort {}, errors . New ("could not bind listening socket: " + err . Error () )
235224 }
236225 if err = d .listen (lsock .sockn ); err != nil {
237- return - 1 , netip.AddrPort {}, fmt . Errorf ("could not set listening socket: %w" , err )
226+ return - 1 , netip.AddrPort {}, errors . New ("could not set listening socket: " + err . Error () )
238227 }
239228
240229 csock .setInUse (true )
@@ -255,7 +244,7 @@ func (d *Device) waitForEstablished(sockn uint8) error {
255244 // The server closed the connection, so we need to reset the socket
256245 // and set it to listen again.
257246 if err := d .listen (sockn ); err != nil {
258- return fmt . Errorf ("could not set socket to listen: %w" , err )
247+ return errors . New ("could not set socket to listen: " + err . Error () )
259248 }
260249 break
261250 }
@@ -292,7 +281,7 @@ func (d *Device) Send(sockfd int, buf []byte, _ int, deadline time.Time) (int, e
292281
293282 sent , err := d .sendChunk (sockfd , buf [i :end ], deadline )
294283 if err != nil {
295- return n , fmt . Errorf ("could not send chunk: %w" , err )
284+ return n , errors . New ("could not send chunk: " + err . Error () )
296285 }
297286 n += sent
298287 }
@@ -305,7 +294,7 @@ func (d *Device) sendChunk(sockfd int, buf []byte, deadline time.Time) (int, err
305294
306295 sock , err := d .socket (sockfd )
307296 if err != nil {
308- return 0 , fmt . Errorf ("could not get socket: %w" , err )
297+ return 0 , errors . New ("could not get socket: " + err . Error () )
309298 }
310299 if sock .closed {
311300 return 0 , os .ErrClosed
@@ -351,7 +340,7 @@ func (d *Device) waitForFreeBuffer(sockn uint8, len uint16, deadline time.Time)
351340 switch status {
352341 case sockStatusEstablished , sockStatusCloseWait :
353342 default :
354- return fmt . Errorf ("socket is not in a valid state for sending data: %d" , status )
343+ return errors . New ("socket is not in a valid state for sending data" )
355344 }
356345
357346 d .mu .Unlock ()
@@ -370,7 +359,7 @@ func (d *Device) Recv(sockfd int, buf []byte, _ int, deadline time.Time) (int, e
370359
371360 sock , err := d .socket (sockfd )
372361 if err != nil {
373- return 0 , fmt . Errorf ("could not get socket: %w" , err )
362+ return 0 , errors . New ("could not get socket: " + err . Error () )
374363 }
375364 if sock .closed {
376365 return 0 , os .ErrClosed
0 commit comments