| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package compute
- import (
- "fmt"
- "strings"
- "yunion.io/x/cloudmux/pkg/apis/compute"
- "yunion.io/x/pkg/util/netutils"
- )
- // IP: 20
- // UDP: 8
- // GENEVE HDR: 8 + 4x
- // total: 36 + 4x
- const VPC_OVN_ENCAP_COST = 60
- const (
- VPC_EXTERNAL_ACCESS_MODE_DISTGW = "distgw" // distgw only
- VPC_EXTERNAL_ACCESS_MODE_EIP_DISTGW = "eip-distgw" // eip when available, distgw otherwise
- VPC_EXTERNAL_ACCESS_MODE_EIP = compute.VPC_EXTERNAL_ACCESS_MODE_EIP // eip only
- VPC_EXTERNAL_ACCESS_MODE_NONE = compute.VPC_EXTERNAL_ACCESS_MODE_NONE // no external access
- )
- var (
- VPC_EXTERNAL_ACCESS_MODES = []string{
- VPC_EXTERNAL_ACCESS_MODE_DISTGW,
- VPC_EXTERNAL_ACCESS_MODE_EIP_DISTGW,
- VPC_EXTERNAL_ACCESS_MODE_EIP,
- VPC_EXTERNAL_ACCESS_MODE_NONE,
- }
- )
- const (
- sVpcInterCidr = "100.65.0.0/17"
- sVpcInterExtCidr = "100.65.0.0/30"
- VpcInterExtMask = 30
- sVpcInterExtIP1 = "100.65.0.1"
- sVpcInterExtIP2 = "100.65.0.2"
- VpcInterExtMac1 = "ee:ee:ee:ee:ee:f0"
- VpcInterExtMac2 = "ee:ee:ee:ee:ee:f1"
- sVpcInterCidr6 = "fc00::fffe:100:65:0:0/100"
- sVpcInterExtCidr6 = "fc00::fffe:100:65:0:0/112"
- VpcInterExtMask6 = 112
- sVpcInterExtIP16 = "fc00::fffe:100:65:0:1"
- sVpcInterExtIP26 = "fc00::fffe:100:65:0:2"
- )
- var (
- vpcInterCidr netutils.IPV4Prefix
- vpcInterExtIP1 netutils.IPV4Addr
- vpcInterExtIP2 netutils.IPV4Addr
- vpcInterCidr6 netutils.IPV6Prefix
- vpcInterExtIP16 netutils.IPV6Addr
- vpcInterExtIP26 netutils.IPV6Addr
- )
- func VpcInterCidr() netutils.IPV4Prefix {
- return vpcInterCidr
- }
- func VpcInterExtIP1() netutils.IPV4Addr {
- return vpcInterExtIP1
- }
- func VpcInterExtIP2() netutils.IPV4Addr {
- return vpcInterExtIP2
- }
- func VpcInterCidr6() netutils.IPV6Prefix {
- return vpcInterCidr6
- }
- func VpcInterExtIP16() netutils.IPV6Addr {
- return vpcInterExtIP16
- }
- func VpcInterExtIP26() netutils.IPV6Addr {
- return vpcInterExtIP26
- }
- const (
- sVpcMappedCidr = "100.64.0.0/17"
- VpcMappedIPMask = 17
- sVpcMappedGatewayIP = "100.64.0.1"
- VpcMappedGatewayMac = "ee:ee:ee:ee:ee:ee"
- sVpcMappedCidr6 = "fc00::fffe:100:64:0:0/100"
- VpcMappedIPMask6 = 100
- sVpcMappedGatewayIP6 = "fc00::fffe:100:64:0:1"
- // reserved: [100.64.0.2, 100.64.0.127]
- // [128, 2176 (128+2048)]
- sVpcMappedHostIPStart = "100.64.0.128"
- sVpcMappedHostIPEnd = "100.64.8.128"
- // reserved: [10.64.8.129, 10.64.8.255]
- // [2304, 32511], 30207
- sVpcMappedIPStart = "100.64.9.0"
- sVpcMappedIPEnd = "100.64.126.255"
- // reserved: [10.64.127.0 , 10.64.127.255]
- )
- const (
- sVpcEipGatewayCidr = "100.64.128.0/17"
- VpcEipGatewayIPMask = 17
- sVpcEipGatewayIP = "100.64.128.2"
- VpcEipGatewayMac = "ee:ee:ee:ee:ee:ef"
- sVpcEipGatewayCidr6 = "fc00::fffe:100:64:f000:0/100"
- VpcEipGatewayIPMask6 = 100
- sVpcEipGatewayIP6 = "fc00::fffe:100:64:f000:2"
- sVpcEipGatewayIP3 = "100.64.128.3"
- VpcEipGatewayMac3 = "ee:ee:ee:ee:ee:f0"
- sVpcEipGatewayIP63 = "fc00::fffe:100:64:f000:3"
- )
- var (
- vpcMappedCidr netutils.IPV4Prefix
- vpcMappedGatewayIP netutils.IPV4Addr
- vpcMappedCidr6 netutils.IPV6Prefix
- vpcMappedGatewayIP6 netutils.IPV6Addr
- vpcEipGatewayCidr netutils.IPV4Prefix
- vpcEipGatewayIP netutils.IPV4Addr
- vpcEipGatewayIP3 netutils.IPV4Addr
- vpcEipGatewayCidr6 netutils.IPV6Prefix
- vpcEipGatewayIP6 netutils.IPV6Addr
- vpcEipGatewayIP63 netutils.IPV6Addr
- vpcMappedHostIPStart netutils.IPV4Addr
- vpcMappedHostIPEnd netutils.IPV4Addr
- vpcMappedIPStart netutils.IPV4Addr
- vpcMappedIPEnd netutils.IPV4Addr
- )
- func init() {
- mi := func(v netutils.IPV4Addr, err error) netutils.IPV4Addr {
- if err != nil {
- panic(err.Error())
- }
- return v
- }
- mp := func(v netutils.IPV4Prefix, err error) netutils.IPV4Prefix {
- if err != nil {
- panic(err.Error())
- }
- return v
- }
- mi6 := func(v netutils.IPV6Addr, err error) netutils.IPV6Addr {
- if err != nil {
- panic(err.Error())
- }
- return v
- }
- mp6 := func(v netutils.IPV6Prefix, err error) netutils.IPV6Prefix {
- if err != nil {
- panic(err.Error())
- }
- return v
- }
- vpcInterCidr = mp(netutils.NewIPV4Prefix(sVpcInterCidr))
- vpcInterExtIP1 = mi(netutils.NewIPV4Addr(sVpcInterExtIP1))
- vpcInterExtIP2 = mi(netutils.NewIPV4Addr(sVpcInterExtIP2))
- vpcInterCidr6 = mp6(netutils.NewIPV6Prefix(sVpcInterCidr6))
- vpcInterExtIP16 = mi6(netutils.NewIPV6Addr(sVpcInterExtIP16))
- vpcInterExtIP26 = mi6(netutils.NewIPV6Addr(sVpcInterExtIP26))
- vpcMappedCidr = mp(netutils.NewIPV4Prefix(sVpcMappedCidr))
- vpcMappedGatewayIP = mi(netutils.NewIPV4Addr(sVpcMappedGatewayIP))
- vpcMappedCidr6 = mp6(netutils.NewIPV6Prefix(sVpcMappedCidr6))
- vpcMappedGatewayIP6 = mi6(netutils.NewIPV6Addr(sVpcMappedGatewayIP6))
- vpcEipGatewayCidr = mp(netutils.NewIPV4Prefix(sVpcEipGatewayCidr))
- vpcEipGatewayIP = mi(netutils.NewIPV4Addr(sVpcEipGatewayIP))
- vpcEipGatewayIP3 = mi(netutils.NewIPV4Addr(sVpcEipGatewayIP3))
- vpcEipGatewayCidr6 = mp6(netutils.NewIPV6Prefix(sVpcEipGatewayCidr6))
- vpcEipGatewayIP6 = mi6(netutils.NewIPV6Addr(sVpcEipGatewayIP6))
- vpcEipGatewayIP63 = mi6(netutils.NewIPV6Addr(sVpcEipGatewayIP63))
- vpcMappedHostIPStart = mi(netutils.NewIPV4Addr(sVpcMappedHostIPStart))
- vpcMappedHostIPEnd = mi(netutils.NewIPV4Addr(sVpcMappedHostIPEnd))
- vpcMappedIPStart = mi(netutils.NewIPV4Addr(sVpcMappedIPStart))
- vpcMappedIPEnd = mi(netutils.NewIPV4Addr(sVpcMappedIPEnd))
- }
- func VpcMappedCidr() netutils.IPV4Prefix {
- return vpcMappedCidr
- }
- func VpcMappedCidr6() netutils.IPV6Prefix {
- return vpcMappedCidr6
- }
- func VpcMappedGatewayIP() netutils.IPV4Addr {
- return vpcMappedGatewayIP
- }
- func VpcMappedGatewayIP6() netutils.IPV6Addr {
- return vpcMappedGatewayIP6
- }
- func VpcEipGatewayCidr() netutils.IPV4Prefix {
- return vpcEipGatewayCidr
- }
- func VpcEipGatewayCidr6() netutils.IPV6Prefix {
- return vpcEipGatewayCidr6
- }
- func VpcEipGatewayIP() netutils.IPV4Addr {
- return vpcEipGatewayIP
- }
- func VpcEipGatewayIP6() netutils.IPV6Addr {
- return vpcEipGatewayIP6
- }
- func VpcEipGatewayIP3() netutils.IPV4Addr {
- return vpcEipGatewayIP3
- }
- func VpcEipGatewayIP63() netutils.IPV6Addr {
- return vpcEipGatewayIP63
- }
- func VpcMappedHostIPStart() netutils.IPV4Addr {
- return vpcMappedHostIPStart
- }
- func VpcMappedHostIPEnd() netutils.IPV4Addr {
- return vpcMappedHostIPEnd
- }
- func VpcMappedIPStart() netutils.IPV4Addr {
- return vpcMappedIPStart
- }
- func VpcMappedIPEnd() netutils.IPV4Addr {
- return vpcMappedIPEnd
- }
- func VpcOvnEncapCostStr() string {
- return fmt.Sprintf("%d", VPC_OVN_ENCAP_COST)
- }
- func GenVpcMappedIP6(ip string) string {
- segs := strings.Split(ip, ".")
- return fmt.Sprintf("fc00::fffe:100:64:%s:%s", segs[2], segs[3])
- }
|