Addressing few review comments as part of code refactoring.
Also moved validation logic from CLI to Moby.
Signed-off-by: selansen <elango.siva@docker.com>
| ... | ... |
@@ -3,6 +3,7 @@ package cluster // import "github.com/docker/docker/daemon/cluster" |
| 3 | 3 |
import ( |
| 4 | 4 |
"fmt" |
| 5 | 5 |
"net" |
| 6 |
+ "strings" |
|
| 6 | 7 |
) |
| 7 | 8 |
|
| 8 | 9 |
const ( |
| ... | ... |
@@ -87,6 +88,36 @@ func (c *Cluster) resolveAdvertiseAddr(advertiseAddr, listenAddrPort string) (st |
| 87 | 87 |
return systemAddr.String(), listenAddrPort, nil |
| 88 | 88 |
} |
| 89 | 89 |
|
| 90 |
+// validateDefaultAddrPool validates default address pool |
|
| 91 |
+// it also strips white space from the string before validation |
|
| 92 |
+func validateDefaultAddrPool(defaultAddrPool []string, size uint32) error {
|
|
| 93 |
+ if defaultAddrPool == nil {
|
|
| 94 |
+ // defaultAddrPool is not defined |
|
| 95 |
+ return nil |
|
| 96 |
+ } |
|
| 97 |
+ //if size is not set, then we use default value 24 |
|
| 98 |
+ if size == 0 {
|
|
| 99 |
+ size = 24 |
|
| 100 |
+ } |
|
| 101 |
+ if size > 32 {
|
|
| 102 |
+ return fmt.Errorf("subnet size is out of range: %d", size)
|
|
| 103 |
+ } |
|
| 104 |
+ for i := range defaultAddrPool {
|
|
| 105 |
+ // trim leading and trailing white spaces |
|
| 106 |
+ defaultAddrPool[i] = strings.TrimSpace(defaultAddrPool[i]) |
|
| 107 |
+ _, b, err := net.ParseCIDR(defaultAddrPool[i]) |
|
| 108 |
+ if err != nil {
|
|
| 109 |
+ return fmt.Errorf("invalid base pool %s: %v", defaultAddrPool[i], err)
|
|
| 110 |
+ } |
|
| 111 |
+ ones, _ := b.Mask.Size() |
|
| 112 |
+ if size < uint32(ones) {
|
|
| 113 |
+ return fmt.Errorf("invalid CIDR: %q. Subnet size is too small for pool: %d", defaultAddrPool[i], size)
|
|
| 114 |
+ } |
|
| 115 |
+ } |
|
| 116 |
+ |
|
| 117 |
+ return nil |
|
| 118 |
+} |
|
| 119 |
+ |
|
| 90 | 120 |
func resolveDataPathAddr(dataPathAddr string) (string, error) {
|
| 91 | 121 |
if dataPathAddr == "" {
|
| 92 | 122 |
// dataPathAddr is not defined |
| ... | ... |
@@ -3,7 +3,6 @@ package cluster // import "github.com/docker/docker/daemon/cluster" |
| 3 | 3 |
import ( |
| 4 | 4 |
"context" |
| 5 | 5 |
"fmt" |
| 6 |
- "net" |
|
| 7 | 6 |
"path/filepath" |
| 8 | 7 |
"runtime" |
| 9 | 8 |
"strings" |
| ... | ... |
@@ -14,6 +13,7 @@ import ( |
| 14 | 14 |
"github.com/docker/docker/daemon/cluster/executor/container" |
| 15 | 15 |
lncluster "github.com/docker/libnetwork/cluster" |
| 16 | 16 |
swarmapi "github.com/docker/swarmkit/api" |
| 17 |
+ swarmallocator "github.com/docker/swarmkit/manager/allocator/cnmallocator" |
|
| 17 | 18 |
swarmnode "github.com/docker/swarmkit/node" |
| 18 | 19 |
"github.com/pkg/errors" |
| 19 | 20 |
"github.com/sirupsen/logrus" |
| ... | ... |
@@ -115,12 +115,6 @@ func (n *nodeRunner) start(conf nodeStartConfig) error {
|
| 115 | 115 |
joinAddr = conf.RemoteAddr |
| 116 | 116 |
} |
| 117 | 117 |
|
| 118 |
- var defaultAddrPool []*net.IPNet |
|
| 119 |
- for _, address := range conf.DefaultAddressPool {
|
|
| 120 |
- if _, b, err := net.ParseCIDR(address); err == nil {
|
|
| 121 |
- defaultAddrPool = append(defaultAddrPool, b) |
|
| 122 |
- } |
|
| 123 |
- } |
|
| 124 | 118 |
// Hostname is not set here. Instead, it is obtained from |
| 125 | 119 |
// the node description that is reported periodically |
| 126 | 120 |
swarmnodeConfig := swarmnode.Config{
|
| ... | ... |
@@ -128,11 +122,13 @@ func (n *nodeRunner) start(conf nodeStartConfig) error {
|
| 128 | 128 |
ListenControlAPI: control, |
| 129 | 129 |
ListenRemoteAPI: conf.ListenAddr, |
| 130 | 130 |
AdvertiseRemoteAPI: conf.AdvertiseAddr, |
| 131 |
- DefaultAddrPool: defaultAddrPool, |
|
| 132 |
- SubnetSize: int(conf.SubnetSize), |
|
| 133 |
- JoinAddr: joinAddr, |
|
| 134 |
- StateDir: n.cluster.root, |
|
| 135 |
- JoinToken: conf.joinToken, |
|
| 131 |
+ NetworkConfig: &swarmallocator.NetworkConfig{
|
|
| 132 |
+ DefaultAddrPool: conf.DefaultAddressPool, |
|
| 133 |
+ SubnetSize: conf.SubnetSize, |
|
| 134 |
+ }, |
|
| 135 |
+ JoinAddr: joinAddr, |
|
| 136 |
+ StateDir: n.cluster.root, |
|
| 137 |
+ JoinToken: conf.joinToken, |
|
| 136 | 138 |
Executor: container.NewExecutor( |
| 137 | 139 |
n.cluster.config.Backend, |
| 138 | 140 |
n.cluster.config.PluginBackend, |
| ... | ... |
@@ -92,6 +92,10 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
|
| 92 | 92 |
} |
| 93 | 93 |
} |
| 94 | 94 |
|
| 95 |
+ //Validate Default Address Pool input |
|
| 96 |
+ if err := validateDefaultAddrPool(req.DefaultAddrPool, req.SubnetSize); err != nil {
|
|
| 97 |
+ return "", err |
|
| 98 |
+ } |
|
| 95 | 99 |
nr, err := c.newNodeRunner(nodeStartConfig{
|
| 96 | 100 |
forceNewCluster: req.ForceNewCluster, |
| 97 | 101 |
autolock: req.AutoLockManagers, |
| ... | ... |
@@ -353,7 +353,7 @@ func TestServiceWithDefaultAddressPoolInit(t *testing.T) {
|
| 353 | 353 |
d.Stop(t) |
| 354 | 354 |
|
| 355 | 355 |
// Clean up , set it back to original one to make sure other tests don't fail |
| 356 |
- ipAddr = []string{"10.10.0.0/8"}
|
|
| 356 |
+ ipAddr = []string{"10.0.0.0/8"}
|
|
| 357 | 357 |
ops = append(ops, daemon.WithSwarmDefaultAddrPool(ipAddr)) |
| 358 | 358 |
ops = append(ops, daemon.WithSwarmDefaultAddrPoolSubnetSize(24)) |
| 359 | 359 |
d = swarm.NewSwarm(t, testEnv, ops...) |
| ... | ... |
@@ -125,7 +125,7 @@ github.com/containerd/ttrpc 94dde388801693c54f88a6596f713b51a8b30b2d |
| 125 | 125 |
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef |
| 126 | 126 |
|
| 127 | 127 |
# cluster |
| 128 |
-github.com/docker/swarmkit cfa742c8abe6f8e922f6e4e920153c408e7d9c3b |
|
| 128 |
+github.com/docker/swarmkit d7d23d763a2d47ad6e540f81ab3609f6c323e9be |
|
| 129 | 129 |
github.com/gogo/protobuf v1.0.0 |
| 130 | 130 |
github.com/cloudflare/cfssl 1.3.2 |
| 131 | 131 |
github.com/fernet/fernet-go 1b2437bc582b3cfbb341ee5a29f8ef5b42912ff2 |
| ... | ... |
@@ -136,7 +136,7 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e |
| 136 | 136 |
// then in `run` it's possible that we just terminate the function because |
| 137 | 137 |
// `ctx` is done and hence fail to propagate the timeout error to the agent. |
| 138 | 138 |
// If the error is not propogated to the agent, the agent will not close |
| 139 |
- // the session or rebuild a new sesssion. |
|
| 139 |
+ // the session or rebuild a new session. |
|
| 140 | 140 |
sessionCtx, cancelSession := context.WithCancel(ctx) |
| 141 | 141 |
|
| 142 | 142 |
// Need to run Session in a goroutine since there's no way to set a |
| ... | ... |
@@ -622,6 +622,20 @@ type ContainerSpec struct {
|
| 622 | 622 |
// PidsLimit prevents from OS resource damage by applications inside the container |
| 623 | 623 |
// using fork bomb attack. |
| 624 | 624 |
PidsLimit int64 `protobuf:"varint,25,opt,name=pidsLimit,proto3" json:"pidsLimit,omitempty"` |
| 625 |
+ // Sysctls sets namespaced kernel parameters (sysctls) in the container. This |
|
| 626 |
+ // option is equivalent to passing --sysctl to docker run. |
|
| 627 |
+ // |
|
| 628 |
+ // Note that while options are subject to the same restrictions as arguments |
|
| 629 |
+ // passed to the --sysctl flag on docker run, those options are not further |
|
| 630 |
+ // validated to ensure that they are safe or sensible in a clustered |
|
| 631 |
+ // environment. |
|
| 632 |
+ // |
|
| 633 |
+ // Additionally, sysctls are not validated for support in the underlying |
|
| 634 |
+ // daemon. For information about supported options, refer to the |
|
| 635 |
+ // documentation at: |
|
| 636 |
+ // |
|
| 637 |
+ // https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime |
|
| 638 |
+ Sysctls map[string]string `protobuf:"bytes,26,rep,name=sysctls" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` |
|
| 625 | 639 |
} |
| 626 | 640 |
|
| 627 | 641 |
func (m *ContainerSpec) Reset() { *m = ContainerSpec{} }
|
| ... | ... |
@@ -1176,6 +1190,13 @@ func (m *ContainerSpec) CopyFrom(src interface{}) {
|
| 1176 | 1176 |
m.Healthcheck = &HealthConfig{}
|
| 1177 | 1177 |
deepcopy.Copy(m.Healthcheck, o.Healthcheck) |
| 1178 | 1178 |
} |
| 1179 |
+ if o.Sysctls != nil {
|
|
| 1180 |
+ m.Sysctls = make(map[string]string, len(o.Sysctls)) |
|
| 1181 |
+ for k, v := range o.Sysctls {
|
|
| 1182 |
+ m.Sysctls[k] = v |
|
| 1183 |
+ } |
|
| 1184 |
+ } |
|
| 1185 |
+ |
|
| 1179 | 1186 |
} |
| 1180 | 1187 |
|
| 1181 | 1188 |
func (m *ContainerSpec_PullOptions) Copy() *ContainerSpec_PullOptions {
|
| ... | ... |
@@ -2064,6 +2085,25 @@ func (m *ContainerSpec) MarshalTo(dAtA []byte) (int, error) {
|
| 2064 | 2064 |
i++ |
| 2065 | 2065 |
i = encodeVarintSpecs(dAtA, i, uint64(m.PidsLimit)) |
| 2066 | 2066 |
} |
| 2067 |
+ if len(m.Sysctls) > 0 {
|
|
| 2068 |
+ for k, _ := range m.Sysctls {
|
|
| 2069 |
+ dAtA[i] = 0xd2 |
|
| 2070 |
+ i++ |
|
| 2071 |
+ dAtA[i] = 0x1 |
|
| 2072 |
+ i++ |
|
| 2073 |
+ v := m.Sysctls[k] |
|
| 2074 |
+ mapSize := 1 + len(k) + sovSpecs(uint64(len(k))) + 1 + len(v) + sovSpecs(uint64(len(v))) |
|
| 2075 |
+ i = encodeVarintSpecs(dAtA, i, uint64(mapSize)) |
|
| 2076 |
+ dAtA[i] = 0xa |
|
| 2077 |
+ i++ |
|
| 2078 |
+ i = encodeVarintSpecs(dAtA, i, uint64(len(k))) |
|
| 2079 |
+ i += copy(dAtA[i:], k) |
|
| 2080 |
+ dAtA[i] = 0x12 |
|
| 2081 |
+ i++ |
|
| 2082 |
+ i = encodeVarintSpecs(dAtA, i, uint64(len(v))) |
|
| 2083 |
+ i += copy(dAtA[i:], v) |
|
| 2084 |
+ } |
|
| 2085 |
+ } |
|
| 2067 | 2086 |
return i, nil |
| 2068 | 2087 |
} |
| 2069 | 2088 |
|
| ... | ... |
@@ -2781,6 +2821,14 @@ func (m *ContainerSpec) Size() (n int) {
|
| 2781 | 2781 |
if m.PidsLimit != 0 {
|
| 2782 | 2782 |
n += 2 + sovSpecs(uint64(m.PidsLimit)) |
| 2783 | 2783 |
} |
| 2784 |
+ if len(m.Sysctls) > 0 {
|
|
| 2785 |
+ for k, v := range m.Sysctls {
|
|
| 2786 |
+ _ = k |
|
| 2787 |
+ _ = v |
|
| 2788 |
+ mapEntrySize := 1 + len(k) + sovSpecs(uint64(len(k))) + 1 + len(v) + sovSpecs(uint64(len(v))) |
|
| 2789 |
+ n += mapEntrySize + 2 + sovSpecs(uint64(mapEntrySize)) |
|
| 2790 |
+ } |
|
| 2791 |
+ } |
|
| 2784 | 2792 |
return n |
| 2785 | 2793 |
} |
| 2786 | 2794 |
|
| ... | ... |
@@ -3103,6 +3151,16 @@ func (this *ContainerSpec) String() string {
|
| 3103 | 3103 |
mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
|
| 3104 | 3104 |
} |
| 3105 | 3105 |
mapStringForLabels += "}" |
| 3106 |
+ keysForSysctls := make([]string, 0, len(this.Sysctls)) |
|
| 3107 |
+ for k, _ := range this.Sysctls {
|
|
| 3108 |
+ keysForSysctls = append(keysForSysctls, k) |
|
| 3109 |
+ } |
|
| 3110 |
+ sortkeys.Strings(keysForSysctls) |
|
| 3111 |
+ mapStringForSysctls := "map[string]string{"
|
|
| 3112 |
+ for _, k := range keysForSysctls {
|
|
| 3113 |
+ mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k])
|
|
| 3114 |
+ } |
|
| 3115 |
+ mapStringForSysctls += "}" |
|
| 3106 | 3116 |
s := strings.Join([]string{`&ContainerSpec{`,
|
| 3107 | 3117 |
`Image:` + fmt.Sprintf("%v", this.Image) + `,`,
|
| 3108 | 3118 |
`Labels:` + mapStringForLabels + `,`, |
| ... | ... |
@@ -3129,6 +3187,7 @@ func (this *ContainerSpec) String() string {
|
| 3129 | 3129 |
`Init:` + strings.Replace(fmt.Sprintf("%v", this.Init), "BoolValue", "google_protobuf4.BoolValue", 1) + `,`,
|
| 3130 | 3130 |
`Isolation:` + fmt.Sprintf("%v", this.Isolation) + `,`,
|
| 3131 | 3131 |
`PidsLimit:` + fmt.Sprintf("%v", this.PidsLimit) + `,`,
|
| 3132 |
+ `Sysctls:` + mapStringForSysctls + `,`, |
|
| 3132 | 3133 |
`}`, |
| 3133 | 3134 |
}, "") |
| 3134 | 3135 |
return s |
| ... | ... |
@@ -5277,6 +5336,124 @@ func (m *ContainerSpec) Unmarshal(dAtA []byte) error {
|
| 5277 | 5277 |
break |
| 5278 | 5278 |
} |
| 5279 | 5279 |
} |
| 5280 |
+ case 26: |
|
| 5281 |
+ if wireType != 2 {
|
|
| 5282 |
+ return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", wireType)
|
|
| 5283 |
+ } |
|
| 5284 |
+ var msglen int |
|
| 5285 |
+ for shift := uint(0); ; shift += 7 {
|
|
| 5286 |
+ if shift >= 64 {
|
|
| 5287 |
+ return ErrIntOverflowSpecs |
|
| 5288 |
+ } |
|
| 5289 |
+ if iNdEx >= l {
|
|
| 5290 |
+ return io.ErrUnexpectedEOF |
|
| 5291 |
+ } |
|
| 5292 |
+ b := dAtA[iNdEx] |
|
| 5293 |
+ iNdEx++ |
|
| 5294 |
+ msglen |= (int(b) & 0x7F) << shift |
|
| 5295 |
+ if b < 0x80 {
|
|
| 5296 |
+ break |
|
| 5297 |
+ } |
|
| 5298 |
+ } |
|
| 5299 |
+ if msglen < 0 {
|
|
| 5300 |
+ return ErrInvalidLengthSpecs |
|
| 5301 |
+ } |
|
| 5302 |
+ postIndex := iNdEx + msglen |
|
| 5303 |
+ if postIndex > l {
|
|
| 5304 |
+ return io.ErrUnexpectedEOF |
|
| 5305 |
+ } |
|
| 5306 |
+ if m.Sysctls == nil {
|
|
| 5307 |
+ m.Sysctls = make(map[string]string) |
|
| 5308 |
+ } |
|
| 5309 |
+ var mapkey string |
|
| 5310 |
+ var mapvalue string |
|
| 5311 |
+ for iNdEx < postIndex {
|
|
| 5312 |
+ entryPreIndex := iNdEx |
|
| 5313 |
+ var wire uint64 |
|
| 5314 |
+ for shift := uint(0); ; shift += 7 {
|
|
| 5315 |
+ if shift >= 64 {
|
|
| 5316 |
+ return ErrIntOverflowSpecs |
|
| 5317 |
+ } |
|
| 5318 |
+ if iNdEx >= l {
|
|
| 5319 |
+ return io.ErrUnexpectedEOF |
|
| 5320 |
+ } |
|
| 5321 |
+ b := dAtA[iNdEx] |
|
| 5322 |
+ iNdEx++ |
|
| 5323 |
+ wire |= (uint64(b) & 0x7F) << shift |
|
| 5324 |
+ if b < 0x80 {
|
|
| 5325 |
+ break |
|
| 5326 |
+ } |
|
| 5327 |
+ } |
|
| 5328 |
+ fieldNum := int32(wire >> 3) |
|
| 5329 |
+ if fieldNum == 1 {
|
|
| 5330 |
+ var stringLenmapkey uint64 |
|
| 5331 |
+ for shift := uint(0); ; shift += 7 {
|
|
| 5332 |
+ if shift >= 64 {
|
|
| 5333 |
+ return ErrIntOverflowSpecs |
|
| 5334 |
+ } |
|
| 5335 |
+ if iNdEx >= l {
|
|
| 5336 |
+ return io.ErrUnexpectedEOF |
|
| 5337 |
+ } |
|
| 5338 |
+ b := dAtA[iNdEx] |
|
| 5339 |
+ iNdEx++ |
|
| 5340 |
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift |
|
| 5341 |
+ if b < 0x80 {
|
|
| 5342 |
+ break |
|
| 5343 |
+ } |
|
| 5344 |
+ } |
|
| 5345 |
+ intStringLenmapkey := int(stringLenmapkey) |
|
| 5346 |
+ if intStringLenmapkey < 0 {
|
|
| 5347 |
+ return ErrInvalidLengthSpecs |
|
| 5348 |
+ } |
|
| 5349 |
+ postStringIndexmapkey := iNdEx + intStringLenmapkey |
|
| 5350 |
+ if postStringIndexmapkey > l {
|
|
| 5351 |
+ return io.ErrUnexpectedEOF |
|
| 5352 |
+ } |
|
| 5353 |
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) |
|
| 5354 |
+ iNdEx = postStringIndexmapkey |
|
| 5355 |
+ } else if fieldNum == 2 {
|
|
| 5356 |
+ var stringLenmapvalue uint64 |
|
| 5357 |
+ for shift := uint(0); ; shift += 7 {
|
|
| 5358 |
+ if shift >= 64 {
|
|
| 5359 |
+ return ErrIntOverflowSpecs |
|
| 5360 |
+ } |
|
| 5361 |
+ if iNdEx >= l {
|
|
| 5362 |
+ return io.ErrUnexpectedEOF |
|
| 5363 |
+ } |
|
| 5364 |
+ b := dAtA[iNdEx] |
|
| 5365 |
+ iNdEx++ |
|
| 5366 |
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift |
|
| 5367 |
+ if b < 0x80 {
|
|
| 5368 |
+ break |
|
| 5369 |
+ } |
|
| 5370 |
+ } |
|
| 5371 |
+ intStringLenmapvalue := int(stringLenmapvalue) |
|
| 5372 |
+ if intStringLenmapvalue < 0 {
|
|
| 5373 |
+ return ErrInvalidLengthSpecs |
|
| 5374 |
+ } |
|
| 5375 |
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue |
|
| 5376 |
+ if postStringIndexmapvalue > l {
|
|
| 5377 |
+ return io.ErrUnexpectedEOF |
|
| 5378 |
+ } |
|
| 5379 |
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) |
|
| 5380 |
+ iNdEx = postStringIndexmapvalue |
|
| 5381 |
+ } else {
|
|
| 5382 |
+ iNdEx = entryPreIndex |
|
| 5383 |
+ skippy, err := skipSpecs(dAtA[iNdEx:]) |
|
| 5384 |
+ if err != nil {
|
|
| 5385 |
+ return err |
|
| 5386 |
+ } |
|
| 5387 |
+ if skippy < 0 {
|
|
| 5388 |
+ return ErrInvalidLengthSpecs |
|
| 5389 |
+ } |
|
| 5390 |
+ if (iNdEx + skippy) > postIndex {
|
|
| 5391 |
+ return io.ErrUnexpectedEOF |
|
| 5392 |
+ } |
|
| 5393 |
+ iNdEx += skippy |
|
| 5394 |
+ } |
|
| 5395 |
+ } |
|
| 5396 |
+ m.Sysctls[mapkey] = mapvalue |
|
| 5397 |
+ iNdEx = postIndex |
|
| 5280 | 5398 |
default: |
| 5281 | 5399 |
iNdEx = preIndex |
| 5282 | 5400 |
skippy, err := skipSpecs(dAtA[iNdEx:]) |
| ... | ... |
@@ -6588,139 +6765,141 @@ var ( |
| 6588 | 6588 |
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/specs.proto", fileDescriptorSpecs) }
|
| 6589 | 6589 |
|
| 6590 | 6590 |
var fileDescriptorSpecs = []byte{
|
| 6591 |
- // 2131 bytes of a gzipped FileDescriptorProto |
|
| 6592 |
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x6f, 0x1b, 0xc7, |
|
| 6593 |
- 0x15, 0x17, 0x25, 0x8a, 0x22, 0xdf, 0x52, 0x36, 0x35, 0x71, 0x9c, 0x15, 0x6d, 0x4b, 0x34, 0xe3, |
|
| 6594 |
- 0xb8, 0x4a, 0x82, 0x52, 0xa8, 0x1a, 0xa4, 0x4e, 0xdc, 0xb4, 0x25, 0x45, 0x46, 0x66, 0x6d, 0x4b, |
|
| 6595 |
- 0xc4, 0x50, 0x56, 0x6b, 0xa0, 0x00, 0x31, 0xda, 0x1d, 0x91, 0x03, 0x2d, 0x77, 0xb6, 0xb3, 0x43, |
|
| 6596 |
- 0x19, 0xbc, 0xf5, 0x18, 0xa8, 0x9f, 0x41, 0xe8, 0xa1, 0xe8, 0xbd, 0xfd, 0x16, 0x3e, 0xf6, 0xd8, |
|
| 6597 |
- 0x5e, 0x84, 0x44, 0x5f, 0xa1, 0xb7, 0x5e, 0x5a, 0xcc, 0xec, 0xec, 0x92, 0x94, 0x57, 0x96, 0x81, |
|
| 6598 |
- 0xfa, 0xd0, 0xdb, 0xcc, 0xdb, 0xdf, 0xef, 0xcd, 0xbf, 0xdf, 0xbc, 0xf7, 0x66, 0xe1, 0xb3, 0x3e, |
|
| 6599 |
- 0x93, 0x83, 0xd1, 0x61, 0xcd, 0xe1, 0xc3, 0x4d, 0x97, 0x3b, 0xc7, 0x54, 0x6c, 0x86, 0xaf, 0x88, |
|
| 6600 |
- 0x18, 0x1e, 0x33, 0xb9, 0x49, 0x02, 0xb6, 0x19, 0x06, 0xd4, 0x09, 0x6b, 0x81, 0xe0, 0x92, 0x23, |
|
| 6601 |
- 0x14, 0x01, 0x6a, 0x31, 0xa0, 0x76, 0xf2, 0x93, 0xf2, 0x75, 0x7c, 0x39, 0x0e, 0xa8, 0xe1, 0x97, |
|
| 6602 |
- 0x6f, 0xf5, 0x79, 0x9f, 0xeb, 0xe6, 0xa6, 0x6a, 0x19, 0xeb, 0x5a, 0x9f, 0xf3, 0xbe, 0x47, 0x37, |
|
| 6603 |
- 0x75, 0xef, 0x70, 0x74, 0xb4, 0xe9, 0x8e, 0x04, 0x91, 0x8c, 0xfb, 0xe6, 0xfb, 0xea, 0xe5, 0xef, |
|
| 6604 |
- 0xc4, 0x1f, 0x5f, 0x45, 0x7d, 0x25, 0x48, 0x10, 0x50, 0x61, 0x06, 0xac, 0x9e, 0x65, 0x21, 0xbf, |
|
| 6605 |
- 0xcb, 0x5d, 0xda, 0x0d, 0xa8, 0x83, 0x76, 0xc0, 0x22, 0xbe, 0xcf, 0xa5, 0xf6, 0x1d, 0xda, 0x99, |
|
| 6606 |
- 0x4a, 0x66, 0xc3, 0xda, 0x5a, 0xaf, 0xbd, 0xb9, 0xa6, 0x5a, 0x7d, 0x02, 0x6b, 0x64, 0x5f, 0x9f, |
|
| 6607 |
- 0xaf, 0xcf, 0xe1, 0x69, 0x26, 0xfa, 0x25, 0x14, 0x5d, 0x1a, 0x32, 0x41, 0xdd, 0x9e, 0xe0, 0x1e, |
|
| 6608 |
- 0xb5, 0xe7, 0x2b, 0x99, 0x8d, 0x1b, 0x5b, 0x77, 0xd3, 0x3c, 0xa9, 0xc1, 0x31, 0xf7, 0x28, 0xb6, |
|
| 6609 |
- 0x0c, 0x43, 0x75, 0xd0, 0x0e, 0xc0, 0x90, 0x0e, 0x0f, 0xa9, 0x08, 0x07, 0x2c, 0xb0, 0x17, 0x34, |
|
| 6610 |
- 0xfd, 0x47, 0x57, 0xd1, 0xd5, 0xdc, 0x6b, 0xcf, 0x13, 0x38, 0x9e, 0xa2, 0xa2, 0xe7, 0x50, 0x24, |
|
| 6611 |
- 0x27, 0x84, 0x79, 0xe4, 0x90, 0x79, 0x4c, 0x8e, 0xed, 0xac, 0x76, 0xf5, 0xe9, 0x5b, 0x5d, 0xd5, |
|
| 6612 |
- 0xa7, 0x08, 0x78, 0x86, 0x5e, 0x75, 0x01, 0x26, 0x03, 0xa1, 0x87, 0xb0, 0xd4, 0x69, 0xed, 0x36, |
|
| 6613 |
- 0xdb, 0xbb, 0x3b, 0xa5, 0xb9, 0xf2, 0xea, 0xe9, 0x59, 0xe5, 0x43, 0xe5, 0x63, 0x02, 0xe8, 0x50, |
|
| 6614 |
- 0xdf, 0x65, 0x7e, 0x1f, 0x6d, 0x40, 0xbe, 0xbe, 0xbd, 0xdd, 0xea, 0xec, 0xb7, 0x9a, 0xa5, 0x4c, |
|
| 6615 |
- 0xb9, 0x7c, 0x7a, 0x56, 0xb9, 0x3d, 0x0b, 0xac, 0x3b, 0x0e, 0x0d, 0x24, 0x75, 0xcb, 0xd9, 0xef, |
|
| 6616 |
- 0xfe, 0xbc, 0x36, 0x57, 0xfd, 0x2e, 0x03, 0xc5, 0xe9, 0x49, 0xa0, 0x87, 0x90, 0xab, 0x6f, 0xef, |
|
| 6617 |
- 0xb7, 0x0f, 0x5a, 0xa5, 0xb9, 0x09, 0x7d, 0x1a, 0x51, 0x77, 0x24, 0x3b, 0xa1, 0xe8, 0x01, 0x2c, |
|
| 6618 |
- 0x76, 0xea, 0x2f, 0xba, 0xad, 0x52, 0x66, 0x32, 0x9d, 0x69, 0x58, 0x87, 0x8c, 0x42, 0x8d, 0x6a, |
|
| 6619 |
- 0xe2, 0x7a, 0x7b, 0xb7, 0x34, 0x9f, 0x8e, 0x6a, 0x0a, 0xc2, 0x7c, 0x33, 0x95, 0x3f, 0x65, 0xc1, |
|
| 6620 |
- 0xea, 0x52, 0x71, 0xc2, 0x9c, 0xf7, 0x2c, 0x91, 0x2f, 0x21, 0x2b, 0x49, 0x78, 0xac, 0xa5, 0x61, |
|
| 6621 |
- 0xa5, 0x4b, 0x63, 0x9f, 0x84, 0xc7, 0x6a, 0x50, 0x43, 0xd7, 0x78, 0xa5, 0x0c, 0x41, 0x03, 0x8f, |
|
| 6622 |
- 0x39, 0x44, 0x52, 0x57, 0x2b, 0xc3, 0xda, 0xfa, 0x24, 0x8d, 0x8d, 0x13, 0x94, 0x99, 0xff, 0x93, |
|
| 6623 |
- 0x39, 0x3c, 0x45, 0x45, 0x8f, 0x21, 0xd7, 0xf7, 0xf8, 0x21, 0xf1, 0xb4, 0x26, 0xac, 0xad, 0xfb, |
|
| 6624 |
- 0x69, 0x4e, 0x76, 0x34, 0x62, 0xe2, 0xc0, 0x50, 0xd0, 0x23, 0xc8, 0x8d, 0x02, 0x97, 0x48, 0x6a, |
|
| 6625 |
- 0xe7, 0x34, 0xb9, 0x92, 0x46, 0x7e, 0xa1, 0x11, 0xdb, 0xdc, 0x3f, 0x62, 0x7d, 0x6c, 0xf0, 0xe8, |
|
| 6626 |
- 0x29, 0xe4, 0x7d, 0x2a, 0x5f, 0x71, 0x71, 0x1c, 0xda, 0x4b, 0x95, 0x85, 0x0d, 0x6b, 0xeb, 0xf3, |
|
| 6627 |
- 0x54, 0x31, 0x46, 0x98, 0xba, 0x94, 0xc4, 0x19, 0x0c, 0xa9, 0x2f, 0x23, 0x37, 0x8d, 0x79, 0x3b, |
|
| 6628 |
- 0x83, 0x13, 0x07, 0xe8, 0xe7, 0x90, 0xa7, 0xbe, 0x1b, 0x70, 0xe6, 0x4b, 0x3b, 0x7f, 0xf5, 0x44, |
|
| 6629 |
- 0x5a, 0x06, 0xa3, 0x36, 0x13, 0x27, 0x0c, 0xc5, 0x16, 0xdc, 0xf3, 0x0e, 0x89, 0x73, 0x6c, 0x17, |
|
| 6630 |
- 0xde, 0x71, 0x19, 0x09, 0xa3, 0x91, 0x83, 0xec, 0x90, 0xbb, 0xb4, 0xba, 0x09, 0x2b, 0x6f, 0x6c, |
|
| 6631 |
- 0x35, 0x2a, 0x43, 0xde, 0x6c, 0x75, 0xa4, 0x91, 0x2c, 0x4e, 0xfa, 0xd5, 0x9b, 0xb0, 0x3c, 0xb3, |
|
| 6632 |
- 0xad, 0xd5, 0xbf, 0x2e, 0x42, 0x3e, 0x3e, 0x6b, 0x54, 0x87, 0x82, 0xc3, 0x7d, 0x49, 0x98, 0x4f, |
|
| 6633 |
- 0x85, 0x91, 0x57, 0xea, 0xc9, 0x6c, 0xc7, 0x20, 0xc5, 0x7a, 0x32, 0x87, 0x27, 0x2c, 0xf4, 0x2d, |
|
| 6634 |
- 0x14, 0x04, 0x0d, 0xf9, 0x48, 0x38, 0x34, 0x34, 0xfa, 0xda, 0x48, 0x57, 0x48, 0x04, 0xc2, 0xf4, |
|
| 6635 |
- 0xf7, 0x23, 0x26, 0xa8, 0xda, 0xe5, 0x10, 0x4f, 0xa8, 0xe8, 0x31, 0x2c, 0x09, 0x1a, 0x4a, 0x22, |
|
| 6636 |
- 0xe4, 0xdb, 0x24, 0x82, 0x23, 0x48, 0x87, 0x7b, 0xcc, 0x19, 0xe3, 0x98, 0x81, 0x1e, 0x43, 0x21, |
|
| 6637 |
- 0xf0, 0x88, 0xa3, 0xbd, 0xda, 0x8b, 0x9a, 0x7e, 0x2f, 0x8d, 0xde, 0x89, 0x41, 0x78, 0x82, 0x47, |
|
| 6638 |
- 0x5f, 0x01, 0x78, 0xbc, 0xdf, 0x73, 0x05, 0x3b, 0xa1, 0xc2, 0x48, 0xac, 0x9c, 0xc6, 0x6e, 0x6a, |
|
| 6639 |
- 0x04, 0x2e, 0x78, 0xbc, 0x1f, 0x35, 0xd1, 0xce, 0xff, 0xa4, 0xaf, 0x29, 0x6d, 0x3d, 0x05, 0x20, |
|
| 6640 |
- 0xc9, 0x57, 0xa3, 0xae, 0x4f, 0xdf, 0xc9, 0x95, 0x39, 0x91, 0x29, 0x3a, 0xba, 0x0f, 0xc5, 0x23, |
|
| 6641 |
- 0x2e, 0x1c, 0xda, 0x33, 0xb7, 0xa6, 0xa0, 0x35, 0x61, 0x69, 0x5b, 0xa4, 0x2f, 0xd4, 0x80, 0xa5, |
|
| 6642 |
- 0x3e, 0xf5, 0xa9, 0x60, 0x8e, 0x0d, 0x7a, 0xb0, 0x87, 0xa9, 0x17, 0x32, 0x82, 0xe0, 0x91, 0x2f, |
|
| 6643 |
- 0xd9, 0x90, 0x9a, 0x91, 0x62, 0x22, 0xfa, 0x1d, 0x7c, 0x10, 0x1f, 0x5f, 0x4f, 0xd0, 0x23, 0x2a, |
|
| 6644 |
- 0xa8, 0xaf, 0x34, 0x60, 0xe9, 0x7d, 0xf8, 0xe4, 0xed, 0x1a, 0x30, 0x68, 0x13, 0x6c, 0x90, 0xb8, |
|
| 6645 |
- 0xfc, 0x21, 0x6c, 0x14, 0x60, 0x49, 0x44, 0xe3, 0x56, 0xff, 0x98, 0x51, 0xaa, 0xbf, 0x84, 0x40, |
|
| 6646 |
- 0x9b, 0x60, 0x25, 0xc3, 0x33, 0x57, 0xab, 0xb7, 0xd0, 0xb8, 0x71, 0x71, 0xbe, 0x0e, 0x31, 0xb6, |
|
| 6647 |
- 0xdd, 0x54, 0x31, 0xc8, 0xb4, 0x5d, 0xd4, 0x82, 0xe5, 0x84, 0xa0, 0xca, 0x00, 0x93, 0x28, 0x2b, |
|
| 6648 |
- 0x6f, 0x9b, 0xe9, 0xfe, 0x38, 0xa0, 0xb8, 0x28, 0xa6, 0x7a, 0xd5, 0xdf, 0x02, 0x7a, 0x73, 0x5f, |
|
| 6649 |
- 0x10, 0x82, 0xec, 0x31, 0xf3, 0xcd, 0x34, 0xb0, 0x6e, 0xa3, 0x1a, 0x2c, 0x05, 0x64, 0xec, 0x71, |
|
| 6650 |
- 0xe2, 0x9a, 0x8b, 0x71, 0xab, 0x16, 0x15, 0x08, 0xb5, 0xb8, 0x40, 0xa8, 0xd5, 0xfd, 0x31, 0x8e, |
|
| 6651 |
- 0x41, 0xd5, 0xa7, 0xf0, 0x61, 0xea, 0xf1, 0xa2, 0x2d, 0x28, 0x26, 0x17, 0x6e, 0xb2, 0xd6, 0x9b, |
|
| 6652 |
- 0x17, 0xe7, 0xeb, 0x56, 0x72, 0x33, 0xdb, 0x4d, 0x6c, 0x25, 0xa0, 0xb6, 0x5b, 0xfd, 0xde, 0x82, |
|
| 6653 |
- 0xe5, 0x99, 0x6b, 0x8b, 0x6e, 0xc1, 0x22, 0x1b, 0x92, 0x3e, 0x35, 0x73, 0x8c, 0x3a, 0xa8, 0x05, |
|
| 6654 |
- 0x39, 0x8f, 0x1c, 0x52, 0x4f, 0x5d, 0x5e, 0x75, 0x70, 0x3f, 0xbe, 0xf6, 0xfe, 0xd7, 0x9e, 0x69, |
|
| 6655 |
- 0x7c, 0xcb, 0x97, 0x62, 0x8c, 0x0d, 0x19, 0xd9, 0xb0, 0xe4, 0xf0, 0xe1, 0x90, 0xf8, 0x2a, 0x4d, |
|
| 6656 |
- 0x2c, 0x6c, 0x14, 0x70, 0xdc, 0x55, 0x3b, 0x43, 0x44, 0x3f, 0xb4, 0xb3, 0xda, 0xac, 0xdb, 0xa8, |
|
| 6657 |
- 0x04, 0x0b, 0xd4, 0x3f, 0xb1, 0x17, 0xb5, 0x49, 0x35, 0x95, 0xc5, 0x65, 0xd1, 0xed, 0x2b, 0x60, |
|
| 6658 |
- 0xd5, 0x54, 0xbc, 0x51, 0x48, 0x85, 0xbd, 0x14, 0xed, 0xa8, 0x6a, 0xa3, 0x9f, 0x41, 0x6e, 0xc8, |
|
| 6659 |
- 0x47, 0xbe, 0x0c, 0xed, 0xbc, 0x9e, 0xec, 0x6a, 0xda, 0x64, 0x9f, 0x2b, 0x84, 0x51, 0x96, 0x81, |
|
| 6660 |
- 0xa3, 0x16, 0xac, 0x84, 0x92, 0x07, 0xbd, 0xbe, 0x20, 0x0e, 0xed, 0x05, 0x54, 0x30, 0xee, 0x9a, |
|
| 6661 |
- 0x30, 0xbc, 0xfa, 0xc6, 0xa1, 0x34, 0x4d, 0xc1, 0x87, 0x6f, 0x2a, 0xce, 0x8e, 0xa2, 0x74, 0x34, |
|
| 6662 |
- 0x03, 0x75, 0xa0, 0x18, 0x8c, 0x3c, 0xaf, 0xc7, 0x83, 0x28, 0x23, 0x47, 0x77, 0xe7, 0x1d, 0xb6, |
|
| 6663 |
- 0xac, 0x33, 0xf2, 0xbc, 0xbd, 0x88, 0x84, 0xad, 0x60, 0xd2, 0x41, 0xb7, 0x21, 0xd7, 0x17, 0x7c, |
|
| 6664 |
- 0x14, 0x44, 0xf7, 0xa6, 0x80, 0x4d, 0x0f, 0x7d, 0x03, 0x4b, 0x21, 0x75, 0x04, 0x95, 0xa1, 0x5d, |
|
| 6665 |
- 0xd4, 0x4b, 0xfd, 0x38, 0x6d, 0x90, 0xae, 0x86, 0x24, 0x77, 0x02, 0xc7, 0x1c, 0xb4, 0x0a, 0x0b, |
|
| 6666 |
- 0x52, 0x8e, 0xed, 0xe5, 0x4a, 0x66, 0x23, 0xdf, 0x58, 0xba, 0x38, 0x5f, 0x5f, 0xd8, 0xdf, 0x7f, |
|
| 6667 |
- 0x89, 0x95, 0x4d, 0x65, 0x8b, 0x01, 0x0f, 0xa5, 0x4f, 0x86, 0xd4, 0xbe, 0xa1, 0xf7, 0x36, 0xe9, |
|
| 6668 |
- 0xa3, 0x97, 0x00, 0xae, 0x1f, 0xf6, 0x1c, 0x1d, 0x9e, 0xec, 0x9b, 0x7a, 0x75, 0x9f, 0x5f, 0xbf, |
|
| 6669 |
- 0xba, 0xe6, 0x6e, 0xd7, 0x64, 0xcc, 0xe5, 0x8b, 0xf3, 0xf5, 0x42, 0xd2, 0xc5, 0x05, 0xd7, 0x0f, |
|
| 6670 |
- 0xa3, 0x26, 0x6a, 0x80, 0x35, 0xa0, 0xc4, 0x93, 0x03, 0x67, 0x40, 0x9d, 0x63, 0xbb, 0x74, 0x75, |
|
| 6671 |
- 0x0a, 0x7c, 0xa2, 0x61, 0xc6, 0xc3, 0x34, 0x49, 0x29, 0x58, 0x4d, 0x35, 0xb4, 0x57, 0xf4, 0x5e, |
|
| 6672 |
- 0x45, 0x1d, 0x74, 0x0f, 0x80, 0x07, 0xd4, 0xef, 0x85, 0xd2, 0x65, 0xbe, 0x8d, 0xd4, 0x92, 0x71, |
|
| 6673 |
- 0x41, 0x59, 0xba, 0xca, 0x80, 0xee, 0xa8, 0x04, 0x45, 0xdc, 0x1e, 0xf7, 0xbd, 0xb1, 0xfd, 0x81, |
|
| 6674 |
- 0xfe, 0x9a, 0x57, 0x86, 0x3d, 0xdf, 0x1b, 0xa3, 0x75, 0xb0, 0xb4, 0x2e, 0x42, 0xd6, 0xf7, 0x89, |
|
| 6675 |
- 0x67, 0xdf, 0xd2, 0xfb, 0x01, 0xca, 0xd4, 0xd5, 0x16, 0x75, 0x0e, 0xd1, 0x6e, 0x84, 0xf6, 0x87, |
|
| 6676 |
- 0x57, 0x9f, 0x83, 0x99, 0xec, 0xe4, 0x1c, 0x0c, 0x07, 0xfd, 0x02, 0x20, 0x10, 0xec, 0x84, 0x79, |
|
| 6677 |
- 0xb4, 0x4f, 0x43, 0xfb, 0xb6, 0x5e, 0xf4, 0x5a, 0x6a, 0x66, 0x4a, 0x50, 0x78, 0x8a, 0x81, 0x6a, |
|
| 6678 |
- 0x90, 0x65, 0x3e, 0x93, 0xf6, 0x47, 0x26, 0x2b, 0x5d, 0x96, 0x6a, 0x83, 0x73, 0xef, 0x80, 0x78, |
|
| 6679 |
- 0x23, 0x8a, 0x35, 0x0e, 0xb5, 0xa1, 0xc0, 0x42, 0xee, 0x69, 0xf9, 0xda, 0xb6, 0x8e, 0x6f, 0xef, |
|
| 6680 |
- 0x70, 0x7e, 0xed, 0x98, 0x82, 0x27, 0x6c, 0x74, 0x17, 0x0a, 0x01, 0x73, 0xc3, 0x67, 0x6c, 0xc8, |
|
| 6681 |
- 0xa4, 0xbd, 0x5a, 0xc9, 0x6c, 0x2c, 0xe0, 0x89, 0xa1, 0xfc, 0x15, 0x58, 0x53, 0x61, 0x40, 0x5d, |
|
| 6682 |
- 0xdf, 0x63, 0x3a, 0x36, 0x91, 0x45, 0x35, 0xd5, 0x59, 0x9d, 0xa8, 0x89, 0xe9, 0xd0, 0x57, 0xc0, |
|
| 6683 |
- 0x51, 0xe7, 0xeb, 0xf9, 0x47, 0x99, 0xf2, 0x16, 0x58, 0x53, 0xd7, 0x01, 0x7d, 0xac, 0xc2, 0x72, |
|
| 6684 |
- 0x9f, 0x85, 0x52, 0x8c, 0x7b, 0x64, 0x24, 0x07, 0xf6, 0xaf, 0x34, 0xa1, 0x18, 0x1b, 0xeb, 0x23, |
|
| 6685 |
- 0x39, 0x28, 0xf7, 0x60, 0xa2, 0x2a, 0x54, 0x01, 0x4b, 0xa9, 0x35, 0xa4, 0xe2, 0x84, 0x0a, 0x55, |
|
| 6686 |
- 0xf2, 0x28, 0x31, 0x4c, 0x9b, 0xd4, 0xad, 0x0a, 0x29, 0x11, 0xce, 0x40, 0x07, 0xb5, 0x02, 0x36, |
|
| 6687 |
- 0x3d, 0x15, 0xa5, 0xe2, 0xab, 0x6b, 0xa2, 0x94, 0xe9, 0x56, 0xff, 0x96, 0x81, 0x42, 0xb2, 0x0d, |
|
| 6688 |
- 0xe8, 0x0b, 0x58, 0x69, 0x77, 0xf7, 0x9e, 0xd5, 0xf7, 0xdb, 0x7b, 0xbb, 0xbd, 0x66, 0xeb, 0xdb, |
|
| 6689 |
- 0xfa, 0x8b, 0x67, 0xfb, 0xa5, 0xb9, 0xf2, 0xbd, 0xd3, 0xb3, 0xca, 0xea, 0x24, 0xe2, 0xc6, 0xf0, |
|
| 6690 |
- 0x26, 0x3d, 0x22, 0x23, 0x4f, 0xce, 0xb2, 0x3a, 0x78, 0x6f, 0xbb, 0xd5, 0xed, 0x96, 0x32, 0x57, |
|
| 6691 |
- 0xb1, 0x3a, 0x82, 0x3b, 0x34, 0x0c, 0xd1, 0x16, 0x94, 0x26, 0xac, 0x27, 0x2f, 0x3b, 0x2d, 0x7c, |
|
| 6692 |
- 0x50, 0x9a, 0x2f, 0xdf, 0x3d, 0x3d, 0xab, 0xd8, 0x6f, 0x92, 0x9e, 0x8c, 0x03, 0x2a, 0x0e, 0xcc, |
|
| 6693 |
- 0x73, 0xe1, 0x5f, 0x19, 0x28, 0x4e, 0x57, 0x9b, 0x68, 0x3b, 0xaa, 0x12, 0xf5, 0x31, 0xdc, 0xd8, |
|
| 6694 |
- 0xda, 0xbc, 0xae, 0x3a, 0xd5, 0x59, 0xce, 0x1b, 0x29, 0xbf, 0xcf, 0xd5, 0xc3, 0x50, 0x93, 0xd1, |
|
| 6695 |
- 0x17, 0xb0, 0x18, 0x70, 0x21, 0xe3, 0x7c, 0x90, 0xae, 0x56, 0x2e, 0xe2, 0x1a, 0x26, 0x02, 0x57, |
|
| 6696 |
- 0x07, 0x70, 0x63, 0xd6, 0x1b, 0x7a, 0x00, 0x0b, 0x07, 0xed, 0x4e, 0x69, 0xae, 0x7c, 0xe7, 0xf4, |
|
| 6697 |
- 0xac, 0xf2, 0xd1, 0xec, 0xc7, 0x03, 0x26, 0xe4, 0x88, 0x78, 0xed, 0x0e, 0xfa, 0x0c, 0x16, 0x9b, |
|
| 6698 |
- 0xbb, 0x5d, 0x8c, 0x4b, 0x99, 0xf2, 0xfa, 0xe9, 0x59, 0xe5, 0xce, 0x2c, 0x4e, 0x7d, 0xe2, 0x23, |
|
| 6699 |
- 0xdf, 0xc5, 0xfc, 0x30, 0x79, 0x24, 0xfd, 0x7b, 0x1e, 0x2c, 0x93, 0x26, 0xdf, 0xf7, 0x3b, 0x7a, |
|
| 6700 |
- 0x39, 0xaa, 0x01, 0xe3, 0xf8, 0x37, 0x7f, 0x6d, 0x29, 0x58, 0x8c, 0x08, 0x46, 0x97, 0xf7, 0xa1, |
|
| 6701 |
- 0xc8, 0x82, 0x93, 0x2f, 0x7b, 0xd4, 0x27, 0x87, 0x9e, 0x79, 0x2f, 0xe5, 0xb1, 0xa5, 0x6c, 0xad, |
|
| 6702 |
- 0xc8, 0xa4, 0x82, 0x2f, 0xf3, 0x25, 0x15, 0xbe, 0x79, 0x09, 0xe5, 0x71, 0xd2, 0x47, 0xdf, 0x40, |
|
| 6703 |
- 0x96, 0x05, 0x64, 0x68, 0xea, 0xd7, 0xd4, 0x15, 0xb4, 0x3b, 0xf5, 0xe7, 0xe6, 0xde, 0x34, 0xf2, |
|
| 6704 |
- 0x17, 0xe7, 0xeb, 0x59, 0x65, 0xc0, 0x9a, 0x86, 0xd6, 0xe2, 0x12, 0x52, 0x8d, 0xa4, 0x13, 0x69, |
|
| 6705 |
- 0x1e, 0x4f, 0x59, 0x94, 0xf6, 0x99, 0xdf, 0x17, 0x34, 0x0c, 0x75, 0x4a, 0xcd, 0xe3, 0xb8, 0x8b, |
|
| 6706 |
- 0xca, 0xb0, 0x64, 0x0a, 0x51, 0x5d, 0x79, 0x16, 0x54, 0x91, 0x67, 0x0c, 0x8d, 0x65, 0xb0, 0xa2, |
|
| 6707 |
- 0xdd, 0xe8, 0x1d, 0x09, 0x3e, 0xac, 0xfe, 0x27, 0x0b, 0xd6, 0xb6, 0x37, 0x0a, 0xa5, 0xa9, 0x29, |
|
| 6708 |
- 0xde, 0xdb, 0xe6, 0xbf, 0x84, 0x15, 0xa2, 0xdf, 0xe5, 0xc4, 0x57, 0x09, 0x5a, 0xd7, 0xf7, 0xe6, |
|
| 6709 |
- 0x00, 0x1e, 0xa4, 0xba, 0x4b, 0xc0, 0xd1, 0x5b, 0xa0, 0x91, 0x53, 0x3e, 0xed, 0x0c, 0x2e, 0x91, |
|
| 6710 |
- 0x4b, 0x5f, 0x50, 0x17, 0x96, 0xb9, 0x70, 0x06, 0x34, 0x94, 0x51, 0x5a, 0x37, 0xef, 0xd8, 0xd4, |
|
| 6711 |
- 0x3f, 0x1c, 0x7b, 0xd3, 0x40, 0x93, 0xd3, 0xa2, 0xd9, 0xce, 0xfa, 0x40, 0x8f, 0x20, 0x2b, 0xc8, |
|
| 6712 |
- 0x51, 0xfc, 0x56, 0x49, 0xbd, 0x24, 0x98, 0x1c, 0xc9, 0x19, 0x17, 0x9a, 0x81, 0x7e, 0x0d, 0xe0, |
|
| 6713 |
- 0xb2, 0x30, 0x20, 0xd2, 0x19, 0x50, 0x61, 0x0e, 0x3b, 0x75, 0x89, 0xcd, 0x04, 0x35, 0xe3, 0x65, |
|
| 6714 |
- 0x8a, 0x8d, 0x9e, 0x42, 0xc1, 0x21, 0xb1, 0x5c, 0x73, 0x57, 0x3f, 0xee, 0xb7, 0xeb, 0xc6, 0x45, |
|
| 6715 |
- 0x49, 0xb9, 0xb8, 0x38, 0x5f, 0xcf, 0xc7, 0x16, 0x9c, 0x77, 0x88, 0x91, 0xef, 0x53, 0x58, 0x56, |
|
| 6716 |
- 0x8f, 0xfe, 0x9e, 0x1b, 0x85, 0xb3, 0x48, 0x26, 0x57, 0xe4, 0x68, 0xf5, 0x82, 0x34, 0x61, 0x2f, |
|
| 6717 |
- 0x3e, 0xce, 0xa2, 0x9c, 0xb2, 0xa1, 0xdf, 0xc0, 0x0a, 0xf5, 0x1d, 0x31, 0xd6, 0x62, 0x8d, 0x67, |
|
| 6718 |
- 0x98, 0xbf, 0x7a, 0xb1, 0xad, 0x04, 0x3c, 0xb3, 0xd8, 0x12, 0xbd, 0x64, 0xaf, 0xfe, 0x33, 0x03, |
|
| 6719 |
- 0x10, 0x95, 0x3d, 0xef, 0x57, 0x80, 0x08, 0xb2, 0x2e, 0x91, 0x44, 0x6b, 0xae, 0x88, 0x75, 0x1b, |
|
| 6720 |
- 0x7d, 0x0d, 0x20, 0xe9, 0x30, 0x50, 0xa1, 0xd7, 0xef, 0x1b, 0xd9, 0xbc, 0x2d, 0x1c, 0x4c, 0xa1, |
|
| 6721 |
- 0xd1, 0x16, 0xe4, 0xcc, 0x8b, 0x32, 0x7b, 0x2d, 0xcf, 0x20, 0xab, 0x7f, 0xc9, 0x00, 0x44, 0xcb, |
|
| 6722 |
- 0xfc, 0xbf, 0x5e, 0x5b, 0xc3, 0x7e, 0xfd, 0xc3, 0xda, 0xdc, 0x3f, 0x7e, 0x58, 0x9b, 0xfb, 0xc3, |
|
| 6723 |
- 0xc5, 0x5a, 0xe6, 0xf5, 0xc5, 0x5a, 0xe6, 0xef, 0x17, 0x6b, 0x99, 0xef, 0x2f, 0xd6, 0x32, 0x87, |
|
| 6724 |
- 0x39, 0x5d, 0x99, 0xfc, 0xf4, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xa3, 0x85, 0xdc, 0xc7, |
|
| 6725 |
- 0x15, 0x00, 0x00, |
|
| 6591 |
+ // 2166 bytes of a gzipped FileDescriptorProto |
|
| 6592 |
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4d, 0x6f, 0x1b, 0xc9, |
|
| 6593 |
+ 0xd1, 0x16, 0x25, 0x8a, 0x1f, 0x35, 0x94, 0x4d, 0xf5, 0xda, 0xde, 0x11, 0x6d, 0x4b, 0x34, 0xd7, |
|
| 6594 |
+ 0xeb, 0x57, 0xbb, 0x8b, 0x97, 0x42, 0x94, 0xc5, 0xc6, 0x6b, 0x67, 0x93, 0x90, 0x22, 0x57, 0x62, |
|
| 6595 |
+ 0x6c, 0x4b, 0x44, 0x53, 0x56, 0x62, 0x20, 0x00, 0xd1, 0x9a, 0x69, 0x91, 0x03, 0x0d, 0xa7, 0x27, |
|
| 6596 |
+ 0xdd, 0x4d, 0x19, 0xbc, 0xe5, 0xb8, 0x50, 0x7e, 0x83, 0x90, 0x43, 0x90, 0x7b, 0xf2, 0x2f, 0x7c, |
|
| 6597 |
+ 0xcc, 0x31, 0xb9, 0x08, 0x59, 0x1d, 0xf2, 0x07, 0x72, 0xcb, 0x25, 0x41, 0xf7, 0xf4, 0xf0, 0x43, |
|
| 6598 |
+ 0x1e, 0x59, 0x0e, 0xe2, 0x43, 0x6e, 0xdd, 0x35, 0xcf, 0x53, 0xfd, 0xf5, 0x54, 0x75, 0xf5, 0xc0, |
|
| 6599 |
+ 0xe7, 0x3d, 0x4f, 0xf6, 0x87, 0x87, 0x55, 0x87, 0x0d, 0x36, 0x5c, 0xe6, 0x1c, 0x53, 0xbe, 0x21, |
|
| 6600 |
+ 0x5e, 0x13, 0x3e, 0x38, 0xf6, 0xe4, 0x06, 0x09, 0xbd, 0x0d, 0x11, 0x52, 0x47, 0x54, 0x43, 0xce, |
|
| 6601 |
+ 0x24, 0x43, 0x28, 0x02, 0x54, 0x63, 0x40, 0xf5, 0xe4, 0x07, 0xa5, 0xeb, 0xf8, 0x72, 0x14, 0x52, |
|
| 6602 |
+ 0xc3, 0x2f, 0xdd, 0xea, 0xb1, 0x1e, 0xd3, 0xcd, 0x0d, 0xd5, 0x32, 0xd6, 0xd5, 0x1e, 0x63, 0x3d, |
|
| 6603 |
+ 0x9f, 0x6e, 0xe8, 0xde, 0xe1, 0xf0, 0x68, 0xc3, 0x1d, 0x72, 0x22, 0x3d, 0x16, 0x98, 0xef, 0x2b, |
|
| 6604 |
+ 0x97, 0xbf, 0x93, 0x60, 0x74, 0x15, 0xf5, 0x35, 0x27, 0x61, 0x48, 0xb9, 0x19, 0xb0, 0x72, 0x96, |
|
| 6605 |
+ 0x86, 0xdc, 0x2e, 0x73, 0x69, 0x27, 0xa4, 0x0e, 0xda, 0x06, 0x8b, 0x04, 0x01, 0x93, 0xda, 0xb7, |
|
| 6606 |
+ 0xb0, 0x53, 0xe5, 0xd4, 0xba, 0xb5, 0xb9, 0x56, 0x7d, 0x7b, 0x4d, 0xd5, 0xda, 0x04, 0x56, 0x4f, |
|
| 6607 |
+ 0xbf, 0x39, 0x5f, 0x9b, 0xc3, 0xd3, 0x4c, 0xf4, 0x53, 0x28, 0xb8, 0x54, 0x78, 0x9c, 0xba, 0x5d, |
|
| 6608 |
+ 0xce, 0x7c, 0x6a, 0xcf, 0x97, 0x53, 0xeb, 0x37, 0x36, 0xef, 0x25, 0x79, 0x52, 0x83, 0x63, 0xe6, |
|
| 6609 |
+ 0x53, 0x6c, 0x19, 0x86, 0xea, 0xa0, 0x6d, 0x80, 0x01, 0x1d, 0x1c, 0x52, 0x2e, 0xfa, 0x5e, 0x68, |
|
| 6610 |
+ 0x2f, 0x68, 0xfa, 0xff, 0x5d, 0x45, 0x57, 0x73, 0xaf, 0xbe, 0x18, 0xc3, 0xf1, 0x14, 0x15, 0xbd, |
|
| 6611 |
+ 0x80, 0x02, 0x39, 0x21, 0x9e, 0x4f, 0x0e, 0x3d, 0xdf, 0x93, 0x23, 0x3b, 0xad, 0x5d, 0x7d, 0xf6, |
|
| 6612 |
+ 0x4e, 0x57, 0xb5, 0x29, 0x02, 0x9e, 0xa1, 0x57, 0x5c, 0x80, 0xc9, 0x40, 0xe8, 0x11, 0x64, 0xdb, |
|
| 6613 |
+ 0xcd, 0xdd, 0x46, 0x6b, 0x77, 0xbb, 0x38, 0x57, 0x5a, 0x39, 0x3d, 0x2b, 0xdf, 0x56, 0x3e, 0x26, |
|
| 6614 |
+ 0x80, 0x36, 0x0d, 0x5c, 0x2f, 0xe8, 0xa1, 0x75, 0xc8, 0xd5, 0xb6, 0xb6, 0x9a, 0xed, 0xfd, 0x66, |
|
| 6615 |
+ 0xa3, 0x98, 0x2a, 0x95, 0x4e, 0xcf, 0xca, 0x77, 0x66, 0x81, 0x35, 0xc7, 0xa1, 0xa1, 0xa4, 0x6e, |
|
| 6616 |
+ 0x29, 0xfd, 0xdd, 0xef, 0x57, 0xe7, 0x2a, 0xdf, 0xa5, 0xa0, 0x30, 0x3d, 0x09, 0xf4, 0x08, 0x32, |
|
| 6617 |
+ 0xb5, 0xad, 0xfd, 0xd6, 0x41, 0xb3, 0x38, 0x37, 0xa1, 0x4f, 0x23, 0x6a, 0x8e, 0xf4, 0x4e, 0x28, |
|
| 6618 |
+ 0x7a, 0x08, 0x8b, 0xed, 0xda, 0xcb, 0x4e, 0xb3, 0x98, 0x9a, 0x4c, 0x67, 0x1a, 0xd6, 0x26, 0x43, |
|
| 6619 |
+ 0xa1, 0x51, 0x0d, 0x5c, 0x6b, 0xed, 0x16, 0xe7, 0x93, 0x51, 0x0d, 0x4e, 0xbc, 0xc0, 0x4c, 0xe5, |
|
| 6620 |
+ 0x77, 0x69, 0xb0, 0x3a, 0x94, 0x9f, 0x78, 0xce, 0x07, 0x96, 0xc8, 0x57, 0x90, 0x96, 0x44, 0x1c, |
|
| 6621 |
+ 0x6b, 0x69, 0x58, 0xc9, 0xd2, 0xd8, 0x27, 0xe2, 0x58, 0x0d, 0x6a, 0xe8, 0x1a, 0xaf, 0x94, 0xc1, |
|
| 6622 |
+ 0x69, 0xe8, 0x7b, 0x0e, 0x91, 0xd4, 0xd5, 0xca, 0xb0, 0x36, 0x3f, 0x4d, 0x62, 0xe3, 0x31, 0xca, |
|
| 6623 |
+ 0xcc, 0x7f, 0x67, 0x0e, 0x4f, 0x51, 0xd1, 0x53, 0xc8, 0xf4, 0x7c, 0x76, 0x48, 0x7c, 0xad, 0x09, |
|
| 6624 |
+ 0x6b, 0xf3, 0x41, 0x92, 0x93, 0x6d, 0x8d, 0x98, 0x38, 0x30, 0x14, 0xf4, 0x18, 0x32, 0xc3, 0xd0, |
|
| 6625 |
+ 0x25, 0x92, 0xda, 0x19, 0x4d, 0x2e, 0x27, 0x91, 0x5f, 0x6a, 0xc4, 0x16, 0x0b, 0x8e, 0xbc, 0x1e, |
|
| 6626 |
+ 0x36, 0x78, 0xf4, 0x0c, 0x72, 0x01, 0x95, 0xaf, 0x19, 0x3f, 0x16, 0x76, 0xb6, 0xbc, 0xb0, 0x6e, |
|
| 6627 |
+ 0x6d, 0x7e, 0x91, 0x28, 0xc6, 0x08, 0x53, 0x93, 0x92, 0x38, 0xfd, 0x01, 0x0d, 0x64, 0xe4, 0xa6, |
|
| 6628 |
+ 0x3e, 0x6f, 0xa7, 0xf0, 0xd8, 0x01, 0xfa, 0x31, 0xe4, 0x68, 0xe0, 0x86, 0xcc, 0x0b, 0xa4, 0x9d, |
|
| 6629 |
+ 0xbb, 0x7a, 0x22, 0x4d, 0x83, 0x51, 0x9b, 0x89, 0xc7, 0x0c, 0xc5, 0xe6, 0xcc, 0xf7, 0x0f, 0x89, |
|
| 6630 |
+ 0x73, 0x6c, 0xe7, 0xdf, 0x73, 0x19, 0x63, 0x46, 0x3d, 0x03, 0xe9, 0x01, 0x73, 0x69, 0x65, 0x03, |
|
| 6631 |
+ 0x96, 0xdf, 0xda, 0x6a, 0x54, 0x82, 0x9c, 0xd9, 0xea, 0x48, 0x23, 0x69, 0x3c, 0xee, 0x57, 0x6e, |
|
| 6632 |
+ 0xc2, 0xd2, 0xcc, 0xb6, 0x56, 0xfe, 0xb8, 0x08, 0xb9, 0xf8, 0xac, 0x51, 0x0d, 0xf2, 0x0e, 0x0b, |
|
| 6633 |
+ 0x24, 0xf1, 0x02, 0xca, 0x8d, 0xbc, 0x12, 0x4f, 0x66, 0x2b, 0x06, 0x29, 0xd6, 0xce, 0x1c, 0x9e, |
|
| 6634 |
+ 0xb0, 0xd0, 0xb7, 0x90, 0xe7, 0x54, 0xb0, 0x21, 0x77, 0xa8, 0x30, 0xfa, 0x5a, 0x4f, 0x56, 0x48, |
|
| 6635 |
+ 0x04, 0xc2, 0xf4, 0xd7, 0x43, 0x8f, 0x53, 0xb5, 0xcb, 0x02, 0x4f, 0xa8, 0xe8, 0x29, 0x64, 0x39, |
|
| 6636 |
+ 0x15, 0x92, 0x70, 0xf9, 0x2e, 0x89, 0xe0, 0x08, 0xd2, 0x66, 0xbe, 0xe7, 0x8c, 0x70, 0xcc, 0x40, |
|
| 6637 |
+ 0x4f, 0x21, 0x1f, 0xfa, 0xc4, 0xd1, 0x5e, 0xed, 0x45, 0x4d, 0xbf, 0x9f, 0x44, 0x6f, 0xc7, 0x20, |
|
| 6638 |
+ 0x3c, 0xc1, 0xa3, 0xaf, 0x01, 0x7c, 0xd6, 0xeb, 0xba, 0xdc, 0x3b, 0xa1, 0xdc, 0x48, 0xac, 0x94, |
|
| 6639 |
+ 0xc4, 0x6e, 0x68, 0x04, 0xce, 0xfb, 0xac, 0x17, 0x35, 0xd1, 0xf6, 0x7f, 0xa5, 0xaf, 0x29, 0x6d, |
|
| 6640 |
+ 0x3d, 0x03, 0x20, 0xe3, 0xaf, 0x46, 0x5d, 0x9f, 0xbd, 0x97, 0x2b, 0x73, 0x22, 0x53, 0x74, 0xf4, |
|
| 6641 |
+ 0x00, 0x0a, 0x47, 0x8c, 0x3b, 0xb4, 0x6b, 0xa2, 0x26, 0xaf, 0x35, 0x61, 0x69, 0x5b, 0xa4, 0x2f, |
|
| 6642 |
+ 0x54, 0x87, 0x6c, 0x8f, 0x06, 0x94, 0x7b, 0x8e, 0x0d, 0x7a, 0xb0, 0x47, 0x89, 0x01, 0x19, 0x41, |
|
| 6643 |
+ 0xf0, 0x30, 0x90, 0xde, 0x80, 0x9a, 0x91, 0x62, 0x22, 0xfa, 0x15, 0x7c, 0x14, 0x1f, 0x5f, 0x97, |
|
| 6644 |
+ 0xd3, 0x23, 0xca, 0x69, 0xa0, 0x34, 0x60, 0xe9, 0x7d, 0xf8, 0xf4, 0xdd, 0x1a, 0x30, 0x68, 0x93, |
|
| 6645 |
+ 0x6c, 0x10, 0xbf, 0xfc, 0x41, 0xd4, 0xf3, 0x90, 0xe5, 0xd1, 0xb8, 0x95, 0xdf, 0xa6, 0x94, 0xea, |
|
| 6646 |
+ 0x2f, 0x21, 0xd0, 0x06, 0x58, 0xe3, 0xe1, 0x3d, 0x57, 0xab, 0x37, 0x5f, 0xbf, 0x71, 0x71, 0xbe, |
|
| 6647 |
+ 0x06, 0x31, 0xb6, 0xd5, 0x50, 0x39, 0xc8, 0xb4, 0x5d, 0xd4, 0x84, 0xa5, 0x31, 0x41, 0x95, 0x01, |
|
| 6648 |
+ 0xe6, 0xa2, 0x2c, 0xbf, 0x6b, 0xa6, 0xfb, 0xa3, 0x90, 0xe2, 0x02, 0x9f, 0xea, 0x55, 0x7e, 0x09, |
|
| 6649 |
+ 0xe8, 0xed, 0x7d, 0x41, 0x08, 0xd2, 0xc7, 0x5e, 0x60, 0xa6, 0x81, 0x75, 0x1b, 0x55, 0x21, 0x1b, |
|
| 6650 |
+ 0x92, 0x91, 0xcf, 0x88, 0x6b, 0x02, 0xe3, 0x56, 0x35, 0x2a, 0x10, 0xaa, 0x71, 0x81, 0x50, 0xad, |
|
| 6651 |
+ 0x05, 0x23, 0x1c, 0x83, 0x2a, 0xcf, 0xe0, 0x76, 0xe2, 0xf1, 0xa2, 0x4d, 0x28, 0x8c, 0x03, 0x6e, |
|
| 6652 |
+ 0xb2, 0xd6, 0x9b, 0x17, 0xe7, 0x6b, 0xd6, 0x38, 0x32, 0x5b, 0x0d, 0x6c, 0x8d, 0x41, 0x2d, 0xb7, |
|
| 6653 |
+ 0xf2, 0xf7, 0x02, 0x2c, 0xcd, 0x84, 0x2d, 0xba, 0x05, 0x8b, 0xde, 0x80, 0xf4, 0xa8, 0x99, 0x63, |
|
| 6654 |
+ 0xd4, 0x41, 0x4d, 0xc8, 0xf8, 0xe4, 0x90, 0xfa, 0x2a, 0x78, 0xd5, 0xc1, 0xfd, 0xff, 0xb5, 0xf1, |
|
| 6655 |
+ 0x5f, 0x7d, 0xae, 0xf1, 0xcd, 0x40, 0xf2, 0x11, 0x36, 0x64, 0x64, 0x43, 0xd6, 0x61, 0x83, 0x01, |
|
| 6656 |
+ 0x09, 0xd4, 0x35, 0xb1, 0xb0, 0x9e, 0xc7, 0x71, 0x57, 0xed, 0x0c, 0xe1, 0x3d, 0x61, 0xa7, 0xb5, |
|
| 6657 |
+ 0x59, 0xb7, 0x51, 0x11, 0x16, 0x68, 0x70, 0x62, 0x2f, 0x6a, 0x93, 0x6a, 0x2a, 0x8b, 0xeb, 0x45, |
|
| 6658 |
+ 0xd1, 0x97, 0xc7, 0xaa, 0xa9, 0x78, 0x43, 0x41, 0xb9, 0x9d, 0x8d, 0x76, 0x54, 0xb5, 0xd1, 0x8f, |
|
| 6659 |
+ 0x20, 0x33, 0x60, 0xc3, 0x40, 0x0a, 0x3b, 0xa7, 0x27, 0xbb, 0x92, 0x34, 0xd9, 0x17, 0x0a, 0x61, |
|
| 6660 |
+ 0x94, 0x65, 0xe0, 0xa8, 0x09, 0xcb, 0x42, 0xb2, 0xb0, 0xdb, 0xe3, 0xc4, 0xa1, 0xdd, 0x90, 0x72, |
|
| 6661 |
+ 0x8f, 0xb9, 0x26, 0x0d, 0xaf, 0xbc, 0x75, 0x28, 0x0d, 0x53, 0xf0, 0xe1, 0x9b, 0x8a, 0xb3, 0xad, |
|
| 6662 |
+ 0x28, 0x6d, 0xcd, 0x40, 0x6d, 0x28, 0x84, 0x43, 0xdf, 0xef, 0xb2, 0x30, 0xba, 0x91, 0xa3, 0xd8, |
|
| 6663 |
+ 0x79, 0x8f, 0x2d, 0x6b, 0x0f, 0x7d, 0x7f, 0x2f, 0x22, 0x61, 0x2b, 0x9c, 0x74, 0xd0, 0x1d, 0xc8, |
|
| 6664 |
+ 0xf4, 0x38, 0x1b, 0x86, 0x51, 0xdc, 0xe4, 0xb1, 0xe9, 0xa1, 0x6f, 0x20, 0x2b, 0xa8, 0xc3, 0xa9, |
|
| 6665 |
+ 0x14, 0x76, 0x41, 0x2f, 0xf5, 0x93, 0xa4, 0x41, 0x3a, 0x1a, 0x32, 0x8e, 0x09, 0x1c, 0x73, 0xd0, |
|
| 6666 |
+ 0x0a, 0x2c, 0x48, 0x39, 0xb2, 0x97, 0xca, 0xa9, 0xf5, 0x5c, 0x3d, 0x7b, 0x71, 0xbe, 0xb6, 0xb0, |
|
| 6667 |
+ 0xbf, 0xff, 0x0a, 0x2b, 0x9b, 0xba, 0x2d, 0xfa, 0x4c, 0xc8, 0x80, 0x0c, 0xa8, 0x7d, 0x43, 0xef, |
|
| 6668 |
+ 0xed, 0xb8, 0x8f, 0x5e, 0x01, 0xb8, 0x81, 0xe8, 0x3a, 0x3a, 0x3d, 0xd9, 0x37, 0xf5, 0xea, 0xbe, |
|
| 6669 |
+ 0xb8, 0x7e, 0x75, 0x8d, 0xdd, 0x8e, 0xb9, 0x31, 0x97, 0x2e, 0xce, 0xd7, 0xf2, 0xe3, 0x2e, 0xce, |
|
| 6670 |
+ 0xbb, 0x81, 0x88, 0x9a, 0xa8, 0x0e, 0x56, 0x9f, 0x12, 0x5f, 0xf6, 0x9d, 0x3e, 0x75, 0x8e, 0xed, |
|
| 6671 |
+ 0xe2, 0xd5, 0x57, 0xe0, 0x8e, 0x86, 0x19, 0x0f, 0xd3, 0x24, 0xa5, 0x60, 0x35, 0x55, 0x61, 0x2f, |
|
| 6672 |
+ 0xeb, 0xbd, 0x8a, 0x3a, 0xe8, 0x3e, 0x00, 0x0b, 0x69, 0xd0, 0x15, 0xd2, 0xf5, 0x02, 0x1b, 0xa9, |
|
| 6673 |
+ 0x25, 0xe3, 0xbc, 0xb2, 0x74, 0x94, 0x01, 0xdd, 0x55, 0x17, 0x14, 0x71, 0xbb, 0x2c, 0xf0, 0x47, |
|
| 6674 |
+ 0xf6, 0x47, 0xfa, 0x6b, 0x4e, 0x19, 0xf6, 0x02, 0x7f, 0x84, 0xd6, 0xc0, 0xd2, 0xba, 0x10, 0x5e, |
|
| 6675 |
+ 0x2f, 0x20, 0xbe, 0x7d, 0x4b, 0xef, 0x07, 0x28, 0x53, 0x47, 0x5b, 0xd4, 0x39, 0x44, 0xbb, 0x21, |
|
| 6676 |
+ 0xec, 0xdb, 0x57, 0x9f, 0x83, 0x99, 0xec, 0xe4, 0x1c, 0x0c, 0x07, 0xfd, 0x04, 0x20, 0xe4, 0xde, |
|
| 6677 |
+ 0x89, 0xe7, 0xd3, 0x1e, 0x15, 0xf6, 0x1d, 0xbd, 0xe8, 0xd5, 0xc4, 0x9b, 0x69, 0x8c, 0xc2, 0x53, |
|
| 6678 |
+ 0x0c, 0x54, 0x85, 0xb4, 0x17, 0x78, 0xd2, 0xfe, 0xd8, 0xdc, 0x4a, 0x97, 0xa5, 0x5a, 0x67, 0xcc, |
|
| 6679 |
+ 0x3f, 0x20, 0xfe, 0x90, 0x62, 0x8d, 0x43, 0x2d, 0xc8, 0x7b, 0x82, 0xf9, 0x5a, 0xbe, 0xb6, 0xad, |
|
| 6680 |
+ 0xf3, 0xdb, 0x7b, 0x9c, 0x5f, 0x2b, 0xa6, 0xe0, 0x09, 0x1b, 0xdd, 0x83, 0x7c, 0xe8, 0xb9, 0xe2, |
|
| 6681 |
+ 0xb9, 0x37, 0xf0, 0xa4, 0xbd, 0x52, 0x4e, 0xad, 0x2f, 0xe0, 0x89, 0x01, 0xed, 0x40, 0x56, 0x8c, |
|
| 6682 |
+ 0x84, 0x23, 0x7d, 0x61, 0x97, 0xf4, 0xbe, 0x54, 0xaf, 0x1f, 0xa6, 0x13, 0x11, 0xa2, 0xc4, 0x11, |
|
| 6683 |
+ 0xd3, 0x4b, 0x5f, 0x83, 0x35, 0x95, 0x50, 0x54, 0x22, 0x38, 0xa6, 0x23, 0x93, 0xa3, 0x54, 0x53, |
|
| 6684 |
+ 0x9d, 0xfa, 0x89, 0x5a, 0xa2, 0x4e, 0xa2, 0x79, 0x1c, 0x75, 0x9e, 0xcc, 0x3f, 0x4e, 0x95, 0x36, |
|
| 6685 |
+ 0xc1, 0x9a, 0x0a, 0x2c, 0xf4, 0x89, 0x4a, 0xf0, 0x3d, 0x4f, 0x48, 0x3e, 0xea, 0x92, 0xa1, 0xec, |
|
| 6686 |
+ 0xdb, 0x3f, 0xd3, 0x84, 0x42, 0x6c, 0xac, 0x0d, 0x65, 0xbf, 0xd4, 0x85, 0x89, 0x3e, 0x51, 0x19, |
|
| 6687 |
+ 0x2c, 0xa5, 0x7b, 0x41, 0xf9, 0x09, 0xe5, 0xaa, 0x78, 0x52, 0xb2, 0x9a, 0x36, 0xa9, 0xf8, 0x14, |
|
| 6688 |
+ 0x94, 0x70, 0xa7, 0xaf, 0xd3, 0x63, 0x1e, 0x9b, 0x9e, 0xca, 0x77, 0x71, 0x12, 0x30, 0xf9, 0xce, |
|
| 6689 |
+ 0x74, 0x4b, 0x4f, 0xa0, 0x30, 0xbd, 0xd0, 0xff, 0x64, 0x41, 0x95, 0x3f, 0xa5, 0x20, 0x3f, 0x3e, |
|
| 6690 |
+ 0x0c, 0xf4, 0x25, 0x2c, 0xb7, 0x3a, 0x7b, 0xcf, 0x6b, 0xfb, 0xad, 0xbd, 0xdd, 0x6e, 0xa3, 0xf9, |
|
| 6691 |
+ 0x6d, 0xed, 0xe5, 0xf3, 0xfd, 0xe2, 0x5c, 0xe9, 0xfe, 0xe9, 0x59, 0x79, 0x65, 0x92, 0xf7, 0x63, |
|
| 6692 |
+ 0x78, 0x83, 0x1e, 0x91, 0xa1, 0x2f, 0x67, 0x59, 0x6d, 0xbc, 0xb7, 0xd5, 0xec, 0x74, 0x8a, 0xa9, |
|
| 6693 |
+ 0xab, 0x58, 0x6d, 0xce, 0x1c, 0x2a, 0x04, 0xda, 0x84, 0xe2, 0x84, 0xb5, 0xf3, 0xaa, 0xdd, 0xc4, |
|
| 6694 |
+ 0x07, 0xc5, 0xf9, 0xd2, 0xbd, 0xd3, 0xb3, 0xb2, 0xfd, 0x36, 0x69, 0x67, 0x14, 0x52, 0x7e, 0x60, |
|
| 6695 |
+ 0x1e, 0x2d, 0xff, 0x48, 0x41, 0x61, 0xba, 0xe6, 0x45, 0x5b, 0x51, 0xad, 0xaa, 0x57, 0x7c, 0x63, |
|
| 6696 |
+ 0x73, 0xe3, 0xba, 0x1a, 0x59, 0xdf, 0xb5, 0xfe, 0x50, 0xf9, 0x7d, 0xa1, 0x9e, 0xa7, 0x9a, 0x8c, |
|
| 6697 |
+ 0xbe, 0x84, 0xc5, 0x90, 0x71, 0x19, 0xdf, 0x4a, 0xc9, 0x31, 0xc3, 0x78, 0x5c, 0x49, 0x45, 0xe0, |
|
| 6698 |
+ 0x4a, 0x1f, 0x6e, 0xcc, 0x7a, 0x43, 0x0f, 0x61, 0xe1, 0xa0, 0xd5, 0x2e, 0xce, 0x95, 0xee, 0x9e, |
|
| 6699 |
+ 0x9e, 0x95, 0x3f, 0x9e, 0xfd, 0x78, 0xe0, 0x71, 0x39, 0x24, 0x7e, 0xab, 0x8d, 0x3e, 0x87, 0xc5, |
|
| 6700 |
+ 0xc6, 0x6e, 0x07, 0xe3, 0x62, 0xaa, 0xb4, 0x76, 0x7a, 0x56, 0xbe, 0x3b, 0x8b, 0x53, 0x9f, 0xd8, |
|
| 6701 |
+ 0x30, 0x70, 0x31, 0x3b, 0x1c, 0x3f, 0xd5, 0xfe, 0x39, 0x0f, 0x96, 0xb9, 0xac, 0x3f, 0xf4, 0x6b, |
|
| 6702 |
+ 0x7e, 0x29, 0xaa, 0x44, 0xe3, 0x2c, 0x3c, 0x7f, 0x6d, 0x41, 0x5a, 0x88, 0x08, 0x46, 0xd3, 0x0f, |
|
| 6703 |
+ 0xa0, 0xe0, 0x85, 0x27, 0x5f, 0x75, 0x69, 0x40, 0x0e, 0x7d, 0xf3, 0x6a, 0xcb, 0x61, 0x4b, 0xd9, |
|
| 6704 |
+ 0x9a, 0x91, 0x49, 0x5d, 0x01, 0x5e, 0x20, 0x29, 0x0f, 0xcc, 0x7b, 0x2c, 0x87, 0xc7, 0x7d, 0xf4, |
|
| 6705 |
+ 0x0d, 0xa4, 0xbd, 0x90, 0x0c, 0x4c, 0x15, 0x9d, 0xb8, 0x82, 0x56, 0xbb, 0xf6, 0xc2, 0xc4, 0x5c, |
|
| 6706 |
+ 0x3d, 0x77, 0x71, 0xbe, 0x96, 0x56, 0x06, 0xac, 0x69, 0x68, 0x35, 0x2e, 0x64, 0xd5, 0x48, 0xfa, |
|
| 6707 |
+ 0x3a, 0xcf, 0xe1, 0x29, 0x8b, 0x8a, 0x1b, 0x2f, 0xe8, 0x71, 0x2a, 0x84, 0xbe, 0xd8, 0x73, 0x38, |
|
| 6708 |
+ 0xee, 0xa2, 0x12, 0x64, 0x4d, 0x39, 0xac, 0xeb, 0xdf, 0xbc, 0x2a, 0x35, 0x8d, 0xa1, 0xbe, 0x04, |
|
| 6709 |
+ 0x56, 0xb4, 0x1b, 0xdd, 0x23, 0xce, 0x06, 0x95, 0x7f, 0xa5, 0xc1, 0xda, 0xf2, 0x87, 0x42, 0x9a, |
|
| 6710 |
+ 0xca, 0xe6, 0x83, 0x6d, 0xfe, 0x2b, 0x58, 0x26, 0xfa, 0xef, 0x00, 0x09, 0x54, 0x99, 0xa0, 0x5f, |
|
| 6711 |
+ 0x19, 0xe6, 0x00, 0x1e, 0x26, 0xba, 0x1b, 0x83, 0xa3, 0x17, 0x49, 0x3d, 0xa3, 0x7c, 0xda, 0x29, |
|
| 6712 |
+ 0x5c, 0x24, 0x97, 0xbe, 0xa0, 0x0e, 0x2c, 0x31, 0xee, 0xf4, 0xa9, 0x90, 0x51, 0x71, 0x61, 0x5e, |
|
| 6713 |
+ 0xd3, 0x89, 0xff, 0x59, 0xf6, 0xa6, 0x81, 0xe6, 0x66, 0x8d, 0x66, 0x3b, 0xeb, 0x03, 0x3d, 0x86, |
|
| 6714 |
+ 0x34, 0x27, 0x47, 0xf1, 0x8b, 0x29, 0x31, 0x48, 0x30, 0x39, 0x92, 0x33, 0x2e, 0x34, 0x03, 0xfd, |
|
| 6715 |
+ 0x1c, 0xc0, 0xf5, 0x44, 0x48, 0xa4, 0xd3, 0xa7, 0xdc, 0x1c, 0x76, 0xe2, 0x12, 0x1b, 0x63, 0xd4, |
|
| 6716 |
+ 0x8c, 0x97, 0x29, 0x36, 0x7a, 0x06, 0x79, 0x87, 0xc4, 0x72, 0xcd, 0x5c, 0xfd, 0x8b, 0x61, 0xab, |
|
| 6717 |
+ 0x66, 0x5c, 0x14, 0x95, 0x8b, 0x8b, 0xf3, 0xb5, 0x5c, 0x6c, 0xc1, 0x39, 0x87, 0x18, 0xf9, 0x3e, |
|
| 6718 |
+ 0x83, 0x25, 0x49, 0xc4, 0x71, 0xd7, 0x8d, 0xd2, 0x59, 0x24, 0x93, 0x2b, 0x2a, 0x05, 0xf5, 0x8e, |
|
| 6719 |
+ 0x35, 0x69, 0x2f, 0x3e, 0xce, 0x82, 0x9c, 0xb2, 0xa1, 0x5f, 0xc0, 0x32, 0x0d, 0x1c, 0x3e, 0xd2, |
|
| 6720 |
+ 0x62, 0x8d, 0x67, 0x98, 0xbb, 0x7a, 0xb1, 0xcd, 0x31, 0x78, 0x66, 0xb1, 0x45, 0x7a, 0xc9, 0x5e, |
|
| 6721 |
+ 0xf9, 0x6b, 0x0a, 0x20, 0x2a, 0xbe, 0x3e, 0xac, 0x00, 0x11, 0xa4, 0x5d, 0x22, 0x89, 0xd6, 0x5c, |
|
| 6722 |
+ 0x01, 0xeb, 0x36, 0x7a, 0x02, 0x20, 0xe9, 0x20, 0x54, 0xa9, 0x37, 0xe8, 0x19, 0xd9, 0xbc, 0x2b, |
|
| 6723 |
+ 0x1d, 0x4c, 0xa1, 0xd1, 0x26, 0x64, 0xcc, 0xbb, 0x36, 0x7d, 0x2d, 0xcf, 0x20, 0x2b, 0x7f, 0x48, |
|
| 6724 |
+ 0x01, 0x44, 0xcb, 0xfc, 0x9f, 0x5e, 0x5b, 0xdd, 0x7e, 0xf3, 0xfd, 0xea, 0xdc, 0x5f, 0xbe, 0x5f, |
|
| 6725 |
+ 0x9d, 0xfb, 0xcd, 0xc5, 0x6a, 0xea, 0xcd, 0xc5, 0x6a, 0xea, 0xcf, 0x17, 0xab, 0xa9, 0xbf, 0x5d, |
|
| 6726 |
+ 0xac, 0xa6, 0x0e, 0x33, 0xba, 0x3e, 0xfa, 0xe1, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x32, 0x89, |
|
| 6727 |
+ 0x54, 0x8a, 0x4d, 0x16, 0x00, 0x00, |
|
| 6726 | 6728 |
} |
| ... | ... |
@@ -315,9 +315,24 @@ message ContainerSpec {
|
| 315 | 315 |
// Runtimes that don't support it ignore that field |
| 316 | 316 |
Isolation isolation = 24; |
| 317 | 317 |
|
| 318 |
- // PidsLimit prevents from OS resource damage by applications inside the container |
|
| 318 |
+ // PidsLimit prevents from OS resource damage by applications inside the container |
|
| 319 | 319 |
// using fork bomb attack. |
| 320 | 320 |
int64 pidsLimit = 25; |
| 321 |
+ |
|
| 322 |
+ // Sysctls sets namespaced kernel parameters (sysctls) in the container. This |
|
| 323 |
+ // option is equivalent to passing --sysctl to docker run. |
|
| 324 |
+ // |
|
| 325 |
+ // Note that while options are subject to the same restrictions as arguments |
|
| 326 |
+ // passed to the --sysctl flag on docker run, those options are not further |
|
| 327 |
+ // validated to ensure that they are safe or sensible in a clustered |
|
| 328 |
+ // environment. |
|
| 329 |
+ // |
|
| 330 |
+ // Additionally, sysctls are not validated for support in the underlying |
|
| 331 |
+ // daemon. For information about supported options, refer to the |
|
| 332 |
+ // documentation at: |
|
| 333 |
+ // |
|
| 334 |
+ // https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime |
|
| 335 |
+ map<string, string> sysctls = 26; |
|
| 321 | 336 |
} |
| 322 | 337 |
|
| 323 | 338 |
// EndpointSpec defines the properties that can be configured to |
| ... | ... |
@@ -1,12 +1,12 @@ |
| 1 | 1 |
package allocator |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "net" |
|
| 5 | 4 |
"sync" |
| 6 | 5 |
|
| 7 | 6 |
"github.com/docker/docker/pkg/plugingetter" |
| 8 | 7 |
"github.com/docker/go-events" |
| 9 | 8 |
"github.com/docker/swarmkit/api" |
| 9 |
+ "github.com/docker/swarmkit/manager/allocator/cnmallocator" |
|
| 10 | 10 |
"github.com/docker/swarmkit/manager/state" |
| 11 | 11 |
"github.com/docker/swarmkit/manager/state/store" |
| 12 | 12 |
"golang.org/x/net/context" |
| ... | ... |
@@ -34,12 +34,8 @@ type Allocator struct {
|
| 34 | 34 |
// pluginGetter provides access to docker's plugin inventory. |
| 35 | 35 |
pluginGetter plugingetter.PluginGetter |
| 36 | 36 |
|
| 37 |
- // DefaultAddrPool specifies default subnet pool for global scope networks |
|
| 38 |
- defaultAddrPool []*net.IPNet |
|
| 39 |
- |
|
| 40 |
- // SubnetSize specifies the subnet size of the networks created from |
|
| 41 |
- // the default subnet pool |
|
| 42 |
- subnetSize int |
|
| 37 |
+ // networkConfig stores network related config for the cluster |
|
| 38 |
+ networkConfig *cnmallocator.NetworkConfig |
|
| 43 | 39 |
} |
| 44 | 40 |
|
| 45 | 41 |
// taskBallot controls how the voting for task allocation is |
| ... | ... |
@@ -73,17 +69,16 @@ type allocActor struct {
|
| 73 | 73 |
|
| 74 | 74 |
// New returns a new instance of Allocator for use during allocation |
| 75 | 75 |
// stage of the manager. |
| 76 |
-func New(store *store.MemoryStore, pg plugingetter.PluginGetter, defaultAddrPool []*net.IPNet, subnetSize int) (*Allocator, error) {
|
|
| 76 |
+func New(store *store.MemoryStore, pg plugingetter.PluginGetter, netConfig *cnmallocator.NetworkConfig) (*Allocator, error) {
|
|
| 77 | 77 |
a := &Allocator{
|
| 78 | 78 |
store: store, |
| 79 | 79 |
taskBallot: &taskBallot{
|
| 80 | 80 |
votes: make(map[string][]string), |
| 81 | 81 |
}, |
| 82 |
- stopChan: make(chan struct{}),
|
|
| 83 |
- doneChan: make(chan struct{}),
|
|
| 84 |
- pluginGetter: pg, |
|
| 85 |
- defaultAddrPool: defaultAddrPool, |
|
| 86 |
- subnetSize: subnetSize, |
|
| 82 |
+ stopChan: make(chan struct{}),
|
|
| 83 |
+ doneChan: make(chan struct{}),
|
|
| 84 |
+ pluginGetter: pg, |
|
| 85 |
+ networkConfig: netConfig, |
|
| 87 | 86 |
} |
| 88 | 87 |
|
| 89 | 88 |
return a, nil |
| ... | ... |
@@ -1,7 +1,6 @@ |
| 1 | 1 |
package cnmallocator |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "net" |
|
| 5 | 4 |
"strconv" |
| 6 | 5 |
"strings" |
| 7 | 6 |
|
| ... | ... |
@@ -14,7 +13,7 @@ import ( |
| 14 | 14 |
"github.com/sirupsen/logrus" |
| 15 | 15 |
) |
| 16 | 16 |
|
| 17 |
-func initIPAMDrivers(r *drvregistry.DrvRegistry, defaultAddrPool []*net.IPNet, subnetSize int) error {
|
|
| 17 |
+func initIPAMDrivers(r *drvregistry.DrvRegistry, netConfig *NetworkConfig) error {
|
|
| 18 | 18 |
var addressPool []*ipamutils.NetworkToSplit |
| 19 | 19 |
var str strings.Builder |
| 20 | 20 |
str.WriteString("Subnetlist - ")
|
| ... | ... |
@@ -22,16 +21,16 @@ func initIPAMDrivers(r *drvregistry.DrvRegistry, defaultAddrPool []*net.IPNet, s |
| 22 | 22 |
// from the info. We will be using it to call Libnetwork API |
| 23 | 23 |
// We also need to log new address pool info whenever swarm init |
| 24 | 24 |
// happens with default address pool option |
| 25 |
- if defaultAddrPool != nil {
|
|
| 26 |
- for _, p := range defaultAddrPool {
|
|
| 25 |
+ if netConfig != nil {
|
|
| 26 |
+ for _, p := range netConfig.DefaultAddrPool {
|
|
| 27 | 27 |
addressPool = append(addressPool, &ipamutils.NetworkToSplit{
|
| 28 |
- Base: p.String(), |
|
| 29 |
- Size: subnetSize, |
|
| 28 |
+ Base: p, |
|
| 29 |
+ Size: int(netConfig.SubnetSize), |
|
| 30 | 30 |
}) |
| 31 |
- str.WriteString(p.String() + ",") |
|
| 31 |
+ str.WriteString(p + ",") |
|
| 32 | 32 |
} |
| 33 | 33 |
str.WriteString(": Size ")
|
| 34 |
- str.WriteString(strconv.Itoa(subnetSize)) |
|
| 34 |
+ str.WriteString(strconv.Itoa(int(netConfig.SubnetSize))) |
|
| 35 | 35 |
} |
| 36 | 36 |
if err := ipamutils.ConfigGlobalScopeDefaultNetworks(addressPool); err != nil {
|
| 37 | 37 |
return err |
| ... | ... |
@@ -86,8 +86,18 @@ type initializer struct {
|
| 86 | 86 |
ntype string |
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 |
+// NetworkConfig is used to store network related cluster config in the Manager. |
|
| 90 |
+type NetworkConfig struct {
|
|
| 91 |
+ // DefaultAddrPool specifies default subnet pool for global scope networks |
|
| 92 |
+ DefaultAddrPool []string |
|
| 93 |
+ |
|
| 94 |
+ // SubnetSize specifies the subnet size of the networks created from |
|
| 95 |
+ // the default subnet pool |
|
| 96 |
+ SubnetSize uint32 |
|
| 97 |
+} |
|
| 98 |
+ |
|
| 89 | 99 |
// New returns a new NetworkAllocator handle |
| 90 |
-func New(pg plugingetter.PluginGetter, defaultAddrPool []*net.IPNet, subnetSize int) (networkallocator.NetworkAllocator, error) {
|
|
| 100 |
+func New(pg plugingetter.PluginGetter, netConfig *NetworkConfig) (networkallocator.NetworkAllocator, error) {
|
|
| 91 | 101 |
na := &cnmNetworkAllocator{
|
| 92 | 102 |
networks: make(map[string]*network), |
| 93 | 103 |
services: make(map[string]struct{}),
|
| ... | ... |
@@ -106,7 +116,7 @@ func New(pg plugingetter.PluginGetter, defaultAddrPool []*net.IPNet, subnetSize |
| 106 | 106 |
return nil, err |
| 107 | 107 |
} |
| 108 | 108 |
|
| 109 |
- if err = initIPAMDrivers(reg, defaultAddrPool, subnetSize); err != nil {
|
|
| 109 |
+ if err = initIPAMDrivers(reg, netConfig); err != nil {
|
|
| 110 | 110 |
return nil, err |
| 111 | 111 |
} |
| 112 | 112 |
|
| ... | ... |
@@ -68,7 +68,15 @@ type networkContext struct {
|
| 68 | 68 |
} |
| 69 | 69 |
|
| 70 | 70 |
func (a *Allocator) doNetworkInit(ctx context.Context) (err error) {
|
| 71 |
- na, err := cnmallocator.New(a.pluginGetter, a.defaultAddrPool, a.subnetSize) |
|
| 71 |
+ var netConfig *cnmallocator.NetworkConfig |
|
| 72 |
+ if a.networkConfig != nil && a.networkConfig.DefaultAddrPool != nil {
|
|
| 73 |
+ netConfig = &cnmallocator.NetworkConfig{
|
|
| 74 |
+ DefaultAddrPool: a.networkConfig.DefaultAddrPool, |
|
| 75 |
+ SubnetSize: a.networkConfig.SubnetSize, |
|
| 76 |
+ } |
|
| 77 |
+ } |
|
| 78 |
+ |
|
| 79 |
+ na, err := cnmallocator.New(a.pluginGetter, netConfig) |
|
| 72 | 80 |
if err != nil {
|
| 73 | 81 |
return err |
| 74 | 82 |
} |
| ... | ... |
@@ -19,6 +19,13 @@ const ( |
| 19 | 19 |
// expiredCertGrace is the amount of time to keep a node in the |
| 20 | 20 |
// blacklist beyond its certificate expiration timestamp. |
| 21 | 21 |
expiredCertGrace = 24 * time.Hour * 7 |
| 22 |
+ // inbuilt default subnet size |
|
| 23 |
+ inbuiltSubnetSize = 24 |
|
| 24 |
+) |
|
| 25 |
+ |
|
| 26 |
+var ( |
|
| 27 |
+ // inbuilt default address pool |
|
| 28 |
+ inbuiltDefaultAddressPool = []string{"10.0.0.0/8"}
|
|
| 22 | 29 |
) |
| 23 | 30 |
|
| 24 | 31 |
func validateClusterSpec(spec *api.ClusterSpec) error {
|
| ... | ... |
@@ -268,6 +275,12 @@ func redactClusters(clusters []*api.Cluster) []*api.Cluster {
|
| 268 | 268 |
DefaultAddressPool: cluster.DefaultAddressPool, |
| 269 | 269 |
SubnetSize: cluster.SubnetSize, |
| 270 | 270 |
} |
| 271 |
+ if newCluster.DefaultAddressPool == nil {
|
|
| 272 |
+ // This is just for CLI display. Set the inbuilt default pool for |
|
| 273 |
+ // user reference. |
|
| 274 |
+ newCluster.DefaultAddressPool = inbuiltDefaultAddressPool |
|
| 275 |
+ newCluster.SubnetSize = inbuiltSubnetSize |
|
| 276 |
+ } |
|
| 271 | 277 |
redactedClusters = append(redactedClusters, newCluster) |
| 272 | 278 |
} |
| 273 | 279 |
|
| ... | ... |
@@ -20,6 +20,7 @@ import ( |
| 20 | 20 |
"github.com/docker/swarmkit/identity" |
| 21 | 21 |
"github.com/docker/swarmkit/log" |
| 22 | 22 |
"github.com/docker/swarmkit/manager/allocator" |
| 23 |
+ "github.com/docker/swarmkit/manager/allocator/cnmallocator" |
|
| 23 | 24 |
"github.com/docker/swarmkit/manager/allocator/networkallocator" |
| 24 | 25 |
"github.com/docker/swarmkit/manager/controlapi" |
| 25 | 26 |
"github.com/docker/swarmkit/manager/dispatcher" |
| ... | ... |
@@ -127,12 +128,8 @@ type Config struct {
|
| 127 | 127 |
// FIPS setting. |
| 128 | 128 |
FIPS bool |
| 129 | 129 |
|
| 130 |
- // DefaultAddrPool specifies default subnet pool for global scope networks |
|
| 131 |
- DefaultAddrPool []*net.IPNet |
|
| 132 |
- |
|
| 133 |
- // SubnetSize specifies the subnet size of the networks created from |
|
| 134 |
- // the default subnet pool |
|
| 135 |
- SubnetSize int |
|
| 130 |
+ // NetworkConfig stores network related config for the cluster |
|
| 131 |
+ NetworkConfig *cnmallocator.NetworkConfig |
|
| 136 | 132 |
} |
| 137 | 133 |
|
| 138 | 134 |
// Manager is the cluster manager for Swarm. |
| ... | ... |
@@ -947,14 +944,10 @@ func (m *Manager) becomeLeader(ctx context.Context) {
|
| 947 | 947 |
nil, |
| 948 | 948 |
0) |
| 949 | 949 |
|
| 950 |
- var defaultAddrPool []string |
|
| 951 |
- for _, p := range m.config.DefaultAddrPool {
|
|
| 952 |
- defaultAddrPool = append(defaultAddrPool, p.String()) |
|
| 953 |
- } |
|
| 954 | 950 |
// If defaultAddrPool is valid we update cluster object with new value |
| 955 |
- if defaultAddrPool != nil {
|
|
| 956 |
- clusterObj.DefaultAddressPool = defaultAddrPool |
|
| 957 |
- clusterObj.SubnetSize = uint32(m.config.SubnetSize) |
|
| 951 |
+ if m.config.NetworkConfig != nil && m.config.NetworkConfig.DefaultAddrPool != nil {
|
|
| 952 |
+ clusterObj.DefaultAddressPool = m.config.NetworkConfig.DefaultAddrPool |
|
| 953 |
+ clusterObj.SubnetSize = m.config.NetworkConfig.SubnetSize |
|
| 958 | 954 |
} |
| 959 | 955 |
|
| 960 | 956 |
err := store.CreateCluster(tx, clusterObj) |
| ... | ... |
@@ -1003,24 +996,20 @@ func (m *Manager) becomeLeader(ctx context.Context) {
|
| 1003 | 1003 |
|
| 1004 | 1004 |
// If DefaultAddrPool is null, Read from store and check if |
| 1005 | 1005 |
// DefaultAddrPool info is stored in cluster object |
| 1006 |
- if m.config.DefaultAddrPool == nil {
|
|
| 1006 |
+ if m.config.NetworkConfig == nil || m.config.NetworkConfig.DefaultAddrPool == nil {
|
|
| 1007 | 1007 |
var cluster *api.Cluster |
| 1008 | 1008 |
s.View(func(tx store.ReadTx) {
|
| 1009 | 1009 |
cluster = store.GetCluster(tx, clusterID) |
| 1010 | 1010 |
}) |
| 1011 | 1011 |
if cluster.DefaultAddressPool != nil {
|
| 1012 | 1012 |
for _, address := range cluster.DefaultAddressPool {
|
| 1013 |
- _, b, err := net.ParseCIDR(address) |
|
| 1014 |
- if err != nil {
|
|
| 1015 |
- log.G(ctx).WithError(err).Error("Default Address Pool reading failed for cluster object %s", address)
|
|
| 1016 |
- } |
|
| 1017 |
- m.config.DefaultAddrPool = append(m.config.DefaultAddrPool, b) |
|
| 1013 |
+ m.config.NetworkConfig.DefaultAddrPool = append(m.config.NetworkConfig.DefaultAddrPool, address) |
|
| 1018 | 1014 |
} |
| 1015 |
+ m.config.NetworkConfig.SubnetSize = cluster.SubnetSize |
|
| 1019 | 1016 |
} |
| 1020 |
- m.config.SubnetSize = int(cluster.SubnetSize) |
|
| 1021 | 1017 |
} |
| 1022 | 1018 |
|
| 1023 |
- m.allocator, err = allocator.New(s, m.config.PluginGetter, m.config.DefaultAddrPool, m.config.SubnetSize) |
|
| 1019 |
+ m.allocator, err = allocator.New(s, m.config.PluginGetter, m.config.NetworkConfig) |
|
| 1024 | 1020 |
if err != nil {
|
| 1025 | 1021 |
log.G(ctx).WithError(err).Error("failed to create allocator")
|
| 1026 | 1022 |
// TODO(stevvooe): It doesn't seem correct here to fail |
| ... | ... |
@@ -1144,7 +1133,7 @@ func defaultClusterObject( |
| 1144 | 1144 |
rootCA *ca.RootCA, |
| 1145 | 1145 |
fips bool, |
| 1146 | 1146 |
defaultAddressPool []string, |
| 1147 |
- subnetSize int) *api.Cluster {
|
|
| 1147 |
+ subnetSize uint32) *api.Cluster {
|
|
| 1148 | 1148 |
var caKey []byte |
| 1149 | 1149 |
if rcaSigner, err := rootCA.Signer(); err == nil {
|
| 1150 | 1150 |
caKey = rcaSigner.Key |
| ... | ... |
@@ -1178,7 +1167,7 @@ func defaultClusterObject( |
| 1178 | 1178 |
UnlockKeys: initialUnlockKeys, |
| 1179 | 1179 |
FIPS: fips, |
| 1180 | 1180 |
DefaultAddressPool: defaultAddressPool, |
| 1181 |
- SubnetSize: uint32(subnetSize), |
|
| 1181 |
+ SubnetSize: subnetSize, |
|
| 1182 | 1182 |
} |
| 1183 | 1183 |
} |
| 1184 | 1184 |
|
| ... | ... |
@@ -28,6 +28,7 @@ import ( |
| 28 | 28 |
"github.com/docker/swarmkit/ioutils" |
| 29 | 29 |
"github.com/docker/swarmkit/log" |
| 30 | 30 |
"github.com/docker/swarmkit/manager" |
| 31 |
+ "github.com/docker/swarmkit/manager/allocator/cnmallocator" |
|
| 31 | 32 |
"github.com/docker/swarmkit/manager/encryption" |
| 32 | 33 |
"github.com/docker/swarmkit/remotes" |
| 33 | 34 |
"github.com/docker/swarmkit/xnet" |
| ... | ... |
@@ -105,12 +106,8 @@ type Config struct {
|
| 105 | 105 |
// for connections to the remote API (including the raft service). |
| 106 | 106 |
AdvertiseRemoteAPI string |
| 107 | 107 |
|
| 108 |
- // DefaultAddrPool specifies default subnet pool for global scope networks |
|
| 109 |
- DefaultAddrPool []*net.IPNet |
|
| 110 |
- |
|
| 111 |
- // SubnetSize specifies the subnet size of the networks created from |
|
| 112 |
- // the default subnet pool |
|
| 113 |
- SubnetSize int |
|
| 108 |
+ // NetworkConfig stores network related config for the cluster |
|
| 109 |
+ NetworkConfig *cnmallocator.NetworkConfig |
|
| 114 | 110 |
|
| 115 | 111 |
// Executor specifies the executor to use for the agent. |
| 116 | 112 |
Executor exec.Executor |
| ... | ... |
@@ -1002,8 +999,7 @@ func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig |
| 1002 | 1002 |
PluginGetter: n.config.PluginGetter, |
| 1003 | 1003 |
RootCAPaths: rootPaths, |
| 1004 | 1004 |
FIPS: n.config.FIPS, |
| 1005 |
- DefaultAddrPool: n.config.DefaultAddrPool, |
|
| 1006 |
- SubnetSize: n.config.SubnetSize, |
|
| 1005 |
+ NetworkConfig: n.config.NetworkConfig, |
|
| 1007 | 1006 |
}) |
| 1008 | 1007 |
if err != nil {
|
| 1009 | 1008 |
return false, err |