2016-03-23 00:16:59 +00:00
|
|
|
package utils
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/sha512"
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
2016-03-30 17:40:20 +00:00
|
|
|
const ChainCNIPrefix = ("CNI-")
|
|
|
|
const MaxChainLength = 29 - len(ChainCNIPrefix)
|
2016-03-23 00:16:59 +00:00
|
|
|
|
|
|
|
// Generates a chain name to be used with iptables.
|
2016-03-30 17:40:31 +00:00
|
|
|
// Ensures that the generated chain name is less than
|
2016-03-23 00:16:59 +00:00
|
|
|
// 29 chars in length
|
|
|
|
func FormatChainName(name string, id string) string {
|
2016-03-30 17:17:37 +00:00
|
|
|
chain := fmt.Sprintf("%x", sha512.Sum512([]byte(name+id)))
|
|
|
|
if len(chain) > MaxChainLength {
|
|
|
|
chain = chain[:MaxChainLength]
|
2016-03-23 00:16:59 +00:00
|
|
|
}
|
2016-03-30 17:40:20 +00:00
|
|
|
return fmt.Sprintf("%s%s", ChainCNIPrefix, chain)
|
2016-03-23 00:16:59 +00:00
|
|
|
}
|