Skip to content
Snippets Groups Projects
community.go 589 B
Newer Older
package packet

import (
	"fmt"
	"strconv"
	"strings"
)

func CommunityString(v uint32) string {
	e1 := v >> 16
	e2 := v - e1<<16

	return fmt.Sprintf("(%d,%d)", e1, e2)
}

func ParseCommunityString(s string) (uint32, error) {
	s = strings.Trim(s, "()")
	t := strings.Split(s, ",")

	if len(t) != 2 {
		return 0, fmt.Errorf("can not parse community %s", s)
	}

	v, err := strconv.ParseUint(t[0], 10, 16)
	if err != nil {
		return 0, err
	}
	e1 := uint32(v)

	v, err = strconv.ParseUint(t[1], 10, 16)
	if err != nil {
		return 0, err
	}
	e2 := uint16(v)

	return e1<<16 + uint32(e2), nil
}