Files
drivers/rtl8720dn/util.go
2021-06-27 16:33:32 +02:00

52 lines
1.1 KiB
Go

package rtl8720dn
import (
"bytes"
"encoding/binary"
"fmt"
"strconv"
"strings"
)
type httpHeader []byte
func (h httpHeader) ContentLength() int {
contentLength := -1
idx := bytes.Index(h, []byte("Content-Length: "))
if 0 <= idx {
_, err := fmt.Sscanf(string(h[idx+16:]), "%d", &contentLength)
if err != nil {
return -1
}
}
return contentLength
}
// TODO: IPAddress implementation should be moved under drivers/net
// The same implementation exists in wifinina.
type IPAddress []byte
func (addr IPAddress) String() string {
if len(addr) < 4 {
return ""
}
return strconv.Itoa(int(addr[0])) + "." + strconv.Itoa(int(addr[1])) + "." + strconv.Itoa(int(addr[2])) + "." + strconv.Itoa(int(addr[3]))
}
func ParseIPv4(s string) (IPAddress, error) {
v := strings.Split(s, ".")
v0, _ := strconv.Atoi(v[0])
v1, _ := strconv.Atoi(v[1])
v2, _ := strconv.Atoi(v[2])
v3, _ := strconv.Atoi(v[3])
return IPAddress([]byte{byte(v0), byte(v1), byte(v2), byte(v3)}), nil
}
func (addr IPAddress) AsUint32() uint32 {
if len(addr) < 4 {
return 0
}
b := []byte(string(addr))
return binary.BigEndian.Uint32(b[0:4])
}