mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-18 12:37:05 +02:00
This moves to using grub instead of syslinux. BREAKING CHANGE: Single node upgrades will fail in this change. This will also break the A/B fallback setup since this version introduces an entirely new partition scheme, that any fallback will not know about. We plan on addressing these issues in a follow up change. Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package endianness
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
)
|
|
|
|
// ToMiddleEndian converts a byte slice representation of a UUID to a
|
|
// middle-endian byte slice representation of a UUID.
|
|
//
|
|
//nolint: dupl
|
|
func ToMiddleEndian(data []byte) (b []byte, err error) {
|
|
buf := bytes.NewBuffer(make([]byte, 0, 16))
|
|
|
|
timeLow := binary.BigEndian.Uint32(data[0:4])
|
|
if err := binary.Write(buf, binary.LittleEndian, timeLow); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
timeMid := binary.BigEndian.Uint16(data[4:6])
|
|
if err := binary.Write(buf, binary.LittleEndian, timeMid); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
timeHigh := binary.BigEndian.Uint16(data[6:8])
|
|
if err := binary.Write(buf, binary.LittleEndian, timeHigh); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
clockSeqHi := data[8:9][0]
|
|
if err := binary.Write(buf, binary.BigEndian, clockSeqHi); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
clockSeqLow := data[9:10][0]
|
|
if err := binary.Write(buf, binary.BigEndian, clockSeqLow); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
node := data[10:16]
|
|
if err := binary.Write(buf, binary.BigEndian, node); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
b = buf.Bytes()
|
|
|
|
return b, nil
|
|
}
|
|
|
|
// FromMiddleEndian converts a middle-endian byte slice representation of a
|
|
// UUID to a big-endian byte slice representation of a UUID.
|
|
//
|
|
//nolint: dupl
|
|
func FromMiddleEndian(data []byte) (b []byte, err error) {
|
|
buf := bytes.NewBuffer(make([]byte, 0, 16))
|
|
|
|
timeLow := binary.LittleEndian.Uint32(data[0:4])
|
|
if err := binary.Write(buf, binary.BigEndian, timeLow); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
timeMid := binary.LittleEndian.Uint16(data[4:6])
|
|
if err := binary.Write(buf, binary.BigEndian, timeMid); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
timeHigh := binary.LittleEndian.Uint16(data[6:8])
|
|
if err := binary.Write(buf, binary.BigEndian, timeHigh); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
clockSeqHi := data[8:9][0]
|
|
if err := binary.Write(buf, binary.BigEndian, clockSeqHi); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
clockSeqLow := data[9:10][0]
|
|
if err := binary.Write(buf, binary.BigEndian, clockSeqLow); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
node := data[10:16]
|
|
if err := binary.Write(buf, binary.BigEndian, node); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
b = buf.Bytes()
|
|
|
|
return b, nil
|
|
}
|