From 4f8a72806a4095347e9cfc048291147c3100aa6c Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sat, 27 Feb 2021 02:17:55 +0200 Subject: [PATCH 01/46] app/vmbackupmanager: add docs; the vmbackupmanager is available as a part of enterprise subscription --- app/vmbackupmanager/README.md | 144 +++++++++++++++++++++++++++++ app/vmbackupmanager/latest.png | Bin 0 -> 29287 bytes app/vmbackupmanager/root.png | Bin 0 -> 25981 bytes app/vmbackupmanager/rp_daily_1.png | Bin 0 -> 101008 bytes app/vmbackupmanager/rp_daily_2.png | Bin 0 -> 65956 bytes 5 files changed, 144 insertions(+) create mode 100644 app/vmbackupmanager/README.md create mode 100644 app/vmbackupmanager/latest.png create mode 100644 app/vmbackupmanager/root.png create mode 100644 app/vmbackupmanager/rp_daily_1.png create mode 100644 app/vmbackupmanager/rp_daily_2.png diff --git a/app/vmbackupmanager/README.md b/app/vmbackupmanager/README.md new file mode 100644 index 000000000..c77f3f694 --- /dev/null +++ b/app/vmbackupmanager/README.md @@ -0,0 +1,144 @@ +## Victoria Metrics Backup Manager + +This service automates regular backup procedures. It supports the following backup intervals: **hourly**, **daily**, **weekly** and **monthly**. Multiple backup intervals may be configured simultaneously. I.e. the backup manager creates hourly backups every hour, while it creates daily backups every day, etc. Backup manager must have read access to the storage data, so best practice is to install it on the same machine (or as a sidecar) where the storage node is installed. +The backup service makes a backup every hour and puts it to the latest folder and then copies data to the folders which represent the backup intervals (hourly, daily, weekly and monthly) + +The required flags for running the service are as follows: + +* -eula - should be true and means that you have the legal right to run a backup manager. That can either be a signed contract or an email with confirmation to run the service in a trial period +* -storageDataPath - path to VictoriaMetrics or vmstorage data path to make backup from +* -snapshot.createURL - VictoriaMetrics creates snapshot URL which will automatically be created during backup. Example: http://victoriametrics:8428/snaphsot/create +* -dst - backup destination at s3, gcs or local filesystem +* -credsFilePath - path to file with GCS or S3 credentials. Credentials are loaded from default locations if not set. See [https://cloud.google.com/iam/docs/creating-managing-service-account-keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys) and [https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html) + + +Backup schedule is controlled by the following flags: + +* -disableHourly - disable hourly run. Default false +* -disableDaily - disable daily run. Default false +* -disableWeekly - disable weekly run. Default false +* -disableMonthly - disable monthly run. Default false + +By default, all flags are turned on and Backup Manager backups data every hour for every interval (hourly, daily, weekly and monthly). + + +The backup manager creates the following directory hierarchy at **-dst**: + +* /latest/ - contains the latest backup +* /hourly/ - contains hourly backups. Each backup is named as *YYYY-MM-DD:HH* +* /daily/ - contains daily backups. Each backup is named as *YYYY-MM-DD* +* /weekly/ - contains weekly backups. Each backup is named as *YYYY-WW* +* /monthly/ - contains monthly backups. Each backup is named as *YYYY-MM* + + +To get the full list of supported flags please run the following command: + +```console +./vmbackupmanager --help +``` + +The service creates a **full** backup each run. This means that the system can be restored fully from any particular backup using vmrestore. Backup manager uploads only the data that has been changed or created since the most recent backup (incremental backup). + +*Please take into account that the first backup upload could take a significant amount of time as it needs to upload all of the data.* + +There are two flags which could help with performance tuning: + +* -maxBytesPerSecond - the maximum upload speed. There is no limit if it is set to 0 +* -concurrency - The number of concurrent workers. Higher concurrency may improve upload speed (default 10) + + +### Example of Usage + +GCS and cluster version. You need to have a credentials file in json format with following structure + +credentials.json + +```json +{ + "type": "service_account", + "project_id": "", + "private_key_id": "", + "private_key": "-----BEGIN PRIVATE KEY-----\-----END PRIVATE KEY-----\n", + "client_email": “test@.iam.gserviceaccount.com", + "client_id": "", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test%40.iam.gserviceaccount.com" +} + +``` + +Backup manager launched with the following configuration: + +```console +export NODE_IP=192.168.0.10 +export VMSTORAGE_ENDPOINT=http://127.0.0.1:8428 +./vmbackupmanager -dst=gcs://vmstorage-data/$NODE_IP -credsFilePath=credentials.json -storageDataPath=/vmstorage-data -snapshot.createURL=$VMSTORAGE_ENDPOINT/snapshot/create -eula +``` + +Expected logs in vmbackupmanager: + +```console +info lib/backup/actions/backup.go:131 server-side copied 81 out of 81 parts from GCS{bucket: "vmstorage-data", dir: "192.168.0.10//latest/"} to GCS{bucket: "vmstorage-data", dir: "192.168.0.10//weekly/2020-34/"} in 2.549833008s +info lib/backup/actions/backup.go:169 backed up 853315 bytes in 2.882 seconds; deleted 0 bytes; server-side copied 853315 bytes; uploaded 0 bytes +``` + +Expected logs in vmstorage: + +```console +info VictoriaMetrics/lib/storage/table.go:146 creating table snapshot of "/vmstorage-data/data"... +info VictoriaMetrics/lib/storage/storage.go:311 deleting snapshot "/vmstorage-data/snapshots/20200818201959-162C760149895DDA"... +info VictoriaMetrics/lib/storage/storage.go:319 deleted snapshot "/vmstorage-data/snapshots/20200818201959-162C760149895DDA" in 0.169 seconds +``` + +The result on the GCS bucket + +- The root folder + + ![root](root.png) + +- The latest folder + + ![latest](latest.png) + +## Backup Retention Policy + +Backup retention policy is controlled by: + +* -keepLastHourly - keep the last N hourly backups. Disabled by default +* -keepLastDaily - keep the last N daily backups. Disabled by default +* -keepLastWeekly - keep the last N weekly backups. Disabled by default +* -keepLastMonthly - keep the last N monthly backups. Disabled by default + +*Note*: 0 value in every keepLast flag results into deletion ALL backups for particular type (hourly, daily, weekly and monthly) + +Let’s assume we have a backup manager collecting daily backups for the past 10 days. + +![daily](rp_daily_1.png) + + +We enable backup retention policy for backup manager by using following configuration: + +```console +export NODE_IP=192.168.0.10 +export VMSTORAGE_ENDPOINT=http://127.0.0.1:8428 +./vmbackupmanager -dst=gcs://vmstorage-data/$NODE_IP -credsFilePath=credentials.json -storageDataPath=/vmstorage-data -snapshot.createURL=$VMSTORAGE_ENDPOINT/snapshot/create +-keepLastDaily=3 -eula +``` + +Expected logs in backup manager on start: + +```console +info lib/logger/flag.go:20 flag "keepLastDaily" = "3" +``` + +Expected logs in backup manager during retention cycle: + +```console +info app/vmbackupmanager/retention.go:106 daily backups to delete [daily/2021-02-13 daily/2021-02-12 daily/2021-02-11 daily/2021-02-10 daily/2021-02-09 daily/2021-02-08 daily/2021-02-07] +``` + +The result on the GCS bucket. We see only 3 daily backups: + +![daily](rp_daily_2.png) diff --git a/app/vmbackupmanager/latest.png b/app/vmbackupmanager/latest.png new file mode 100644 index 0000000000000000000000000000000000000000..23162c905871c05ca94546caac941784f37cb92c GIT binary patch literal 29287 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�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

J~Nn4 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 literal 0 HcmV?d00001 diff --git a/app/vmbackupmanager/rp_daily_2.png b/app/vmbackupmanager/rp_daily_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e716c5d6aa30296b19f66ecd66013fa4075fbd6a GIT binary patch literal 65956 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 S{m_5~{^0VeSMp_z{r?T~5)7OG literal 0 HcmV?d00001 From 317b0cbed25002f915f64fe51b2d3d3173288bb6 Mon Sep 17 00:00:00 2001 From: Nikolay Date: Sat, 27 Feb 2021 13:04:58 +0300 Subject: [PATCH 02/46] adds query params for vmalert (#1094) remoteWrite.url now accepts query params at provided url https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1087 --- app/vmalert/remotewrite/remotewrite.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/vmalert/remotewrite/remotewrite.go b/app/vmalert/remotewrite/remotewrite.go index c51be5168..492a7eac6 100644 --- a/app/vmalert/remotewrite/remotewrite.go +++ b/app/vmalert/remotewrite/remotewrite.go @@ -94,7 +94,7 @@ func NewClient(ctx context.Context, cfg Config) (*Client, error) { Timeout: cfg.WriteTimeout, Transport: cfg.Transport, }, - addr: strings.TrimSuffix(cfg.Addr, "/") + writePath, + addr: strings.TrimSuffix(cfg.Addr, "/"), baUser: cfg.BasicAuthUser, baPass: cfg.BasicAuthPass, flushInterval: cfg.FlushInterval, @@ -231,6 +231,7 @@ func (c *Client) send(ctx context.Context, data []byte) error { if c.baPass != "" { req.SetBasicAuth(c.baUser, c.baPass) } + req.URL.Path += writePath resp, err := c.c.Do(req.WithContext(ctx)) if err != nil { return fmt.Errorf("error while sending request to %s: %w; Data len %d(%d)", From af8b7e83912f74cf5fae0582a69f80481f1024ae Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 13:56:24 +0200 Subject: [PATCH 03/46] lib/promscrape: add missing `startWatchersForRole()` call at the beginning of `apiWatcher.getLabelsForRole` --- lib/promscrape/discovery/kubernetes/api.go | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 112c259df..ca77b10de 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -163,6 +163,7 @@ func newAPIWatcher(client *http.Client, apiServer, authorization string, namespa // getLabelsForRole returns all the sets of labels for the given role. func (aw *apiWatcher) getLabelsForRole(role string) []map[string]string { + aw.startWatchersForRole(role) var ms []map[string]string aw.mu.Lock() for _, uw := range aw.watchersByURL { From 03903c1176580aaf56f8da1c32994c0dbb79244a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 14:02:49 +0200 Subject: [PATCH 04/46] docs/CHANGELOG.md: mention 317b0cbed25002f915f64fe51b2d3d3173288bb6 --- docs/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index edd86ee81..0433298e3 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -17,6 +17,7 @@ * FEATURE: add `increase_pure(m[d])` function to MetricsQL. It works the same as `increase(m[d])` except of various edge cases. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/962) for details. * FEATURE: increase accuracy for `buckets_limit(limit, buckets)` results for small `limit` values. See [MetricsQL docs](https://victoriametrics.github.io/MetricsQL.html) for details. * FEATURE: vmagent: initial support for Windows build with `CGO_ENABLED=0 GOOS=windows go build -mod=vendor ./app/vmagent`. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/70) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1036). +* FEATURE: vmalert: properly process query params in `-datasource.url` and `-remoteRead.url` command-line flags. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1087) for details. * BUGFIX: vmagent: properly perform graceful shutdown on `SIGINT` and `SIGTERM` signals. The graceful shutdown has been broken in `v1.54.0`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1065 * BUGFIX: reduce the probability of `duplicate time series` errors when querying Kubernetes metrics. From 05fb08713cdbbe48c750c12060e790fecdc9a9b4 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 14:10:17 +0200 Subject: [PATCH 05/46] lib/promscrape/discovery/kubernetes: compare sorted sets of labels in tests This should deflake tests where the order of labels isn't stable --- .../discovery/kubernetes/node_test.go | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/promscrape/discovery/kubernetes/node_test.go b/lib/promscrape/discovery/kubernetes/node_test.go index e63cbe4b4..5b957e2f3 100644 --- a/lib/promscrape/discovery/kubernetes/node_test.go +++ b/lib/promscrape/discovery/kubernetes/node_test.go @@ -2,6 +2,8 @@ package kubernetes import ( "reflect" + "sort" + "strconv" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -276,7 +278,7 @@ func TestParseNodeListSuccess(t *testing.T) { "__meta_kubernetes_node_address_Hostname": "m01", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels:\ngot\n%v\nwant\n%v", sortedLabelss, expectedLabelss) } } @@ -291,3 +293,26 @@ func getSortedLabelss(objectsByKey map[string]object) [][]prompbmarshal.Label { } return result } + +func areEqualLabelss(a, b [][]prompbmarshal.Label) bool { + sortLabelss(a) + sortLabelss(b) + return reflect.DeepEqual(a, b) +} + +func sortLabelss(a [][]prompbmarshal.Label) { + sort.Slice(a, func(i, j int) bool { + return marshalLabels(a[i]) < marshalLabels(a[j]) + }) +} + +func marshalLabels(a []prompbmarshal.Label) string { + var b []byte + for _, label := range a { + b = strconv.AppendQuote(b, label.Name) + b = append(b, ':') + b = strconv.AppendQuote(b, label.Value) + b = append(b, ',') + } + return string(b) +} From 4281c5ed147e118bbfa487207ad80240e95c9e88 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 14:47:40 +0200 Subject: [PATCH 06/46] vendor: `make vendor-update` --- go.mod | 19 +- go.sum | 46 +- vendor/cloud.google.com/go/CHANGES.md | 19 + vendor/cloud.google.com/go/README.md | 2 + vendor/cloud.google.com/go/go.mod | 6 +- vendor/cloud.google.com/go/go.sum | 13 +- .../go/internal/.repo-metadata-full.json | 4 +- .../stscreds/assume_role_provider.go | 2 +- .../aws/aws-sdk-go/aws/endpoints/defaults.go | 15 +- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws/aws-sdk-go/service/s3/api.go | 171 +- .../github.com/golang/snappy/decode_arm64.s | 45 +- .../github.com/golang/snappy/encode_arm64.s | 81 +- .../klauspost/compress/zstd/enc_best.go | 10 +- .../klauspost/compress/zstd/enc_fast.go | 2 +- .../prometheus/common/model/time.go | 12 + vendor/golang.org/x/net/context/go17.go | 1 + vendor/golang.org/x/net/context/go19.go | 1 + vendor/golang.org/x/net/context/pre_go17.go | 1 + vendor/golang.org/x/net/context/pre_go19.go | 1 + vendor/golang.org/x/net/http2/go111.go | 1 + vendor/golang.org/x/net/http2/not_go111.go | 1 + vendor/golang.org/x/net/http2/server.go | 30 +- vendor/golang.org/x/net/idna/idna10.0.0.go | 1 + vendor/golang.org/x/net/idna/idna9.0.0.go | 1 + vendor/golang.org/x/net/idna/tables10.0.0.go | 1 + vendor/golang.org/x/net/idna/tables11.0.0.go | 1 + vendor/golang.org/x/net/idna/tables12.0.0.go | 1 + vendor/golang.org/x/net/idna/tables13.0.0.go | 1 + vendor/golang.org/x/net/idna/tables9.0.0.go | 1 + .../x/oauth2/google/appengine_gen1.go | 1 + .../x/oauth2/google/appengine_gen2_flex.go | 1 + vendor/golang.org/x/oauth2/google/default.go | 14 +- vendor/golang.org/x/oauth2/google/doc.go | 43 +- .../externalaccount/basecredentials.go | 8 +- .../internal/externalaccount/clientauth.go | 6 +- .../internal/externalaccount/sts_exchange.go | 14 +- .../x/oauth2/internal/client_appengine.go | 1 + vendor/golang.org/x/sys/unix/aliases.go | 3 +- vendor/golang.org/x/sys/unix/asm_zos_s390x.s | 426 +++ vendor/golang.org/x/sys/unix/cap_freebsd.go | 1 + vendor/golang.org/x/sys/unix/constants.go | 3 +- vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 4 +- vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 4 +- vendor/golang.org/x/sys/unix/dev_zos.go | 29 + vendor/golang.org/x/sys/unix/dirent.go | 1 + vendor/golang.org/x/sys/unix/endian_big.go | 1 + vendor/golang.org/x/sys/unix/endian_little.go | 1 + vendor/golang.org/x/sys/unix/env_unix.go | 3 +- vendor/golang.org/x/sys/unix/epoll_zos.go | 221 ++ vendor/golang.org/x/sys/unix/fcntl.go | 1 + .../x/sys/unix/fcntl_linux_32bit.go | 1 + vendor/golang.org/x/sys/unix/fdset.go | 1 + vendor/golang.org/x/sys/unix/fstatfs_zos.go | 164 + vendor/golang.org/x/sys/unix/gccgo.go | 4 +- .../x/sys/unix/gccgo_linux_amd64.go | 1 + vendor/golang.org/x/sys/unix/ioctl.go | 1 + vendor/golang.org/x/sys/unix/ioctl_zos.go | 74 + vendor/golang.org/x/sys/unix/mkerrors.sh | 22 +- vendor/golang.org/x/sys/unix/pagesize_unix.go | 1 + vendor/golang.org/x/sys/unix/ptrace_darwin.go | 1 + vendor/golang.org/x/sys/unix/ptrace_ios.go | 1 + vendor/golang.org/x/sys/unix/race.go | 1 + vendor/golang.org/x/sys/unix/race0.go | 3 +- .../x/sys/unix/readdirent_getdents.go | 1 + .../x/sys/unix/readdirent_getdirentries.go | 1 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 3 +- .../x/sys/unix/sockcmsg_unix_other.go | 7 +- vendor/golang.org/x/sys/unix/str.go | 1 + vendor/golang.org/x/sys/unix/syscall.go | 3 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 11 +- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 4 +- .../x/sys/unix/syscall_aix_ppc64.go | 4 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 9 +- .../x/sys/unix/syscall_darwin.1_12.go | 1 + .../x/sys/unix/syscall_darwin.1_13.go | 1 + .../golang.org/x/sys/unix/syscall_darwin.go | 19 +- .../x/sys/unix/syscall_darwin_386.go | 1 + .../x/sys/unix/syscall_darwin_amd64.go | 1 + .../x/sys/unix/syscall_darwin_arm64.go | 1 + .../x/sys/unix/syscall_darwin_libSystem.go | 1 + .../x/sys/unix/syscall_dragonfly.go | 18 +- .../x/sys/unix/syscall_dragonfly_amd64.go | 1 + .../golang.org/x/sys/unix/syscall_freebsd.go | 17 +- .../x/sys/unix/syscall_freebsd_386.go | 1 + .../x/sys/unix/syscall_freebsd_amd64.go | 1 + .../x/sys/unix/syscall_freebsd_arm.go | 1 + .../x/sys/unix/syscall_freebsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_illumos.go | 1 + vendor/golang.org/x/sys/unix/syscall_linux.go | 107 +- .../x/sys/unix/syscall_linux_386.go | 7 +- .../x/sys/unix/syscall_linux_amd64.go | 3 +- .../x/sys/unix/syscall_linux_amd64_gc.go | 4 +- .../x/sys/unix/syscall_linux_arm.go | 11 +- .../x/sys/unix/syscall_linux_arm64.go | 3 +- .../golang.org/x/sys/unix/syscall_linux_gc.go | 1 + .../x/sys/unix/syscall_linux_gc_386.go | 1 + .../x/sys/unix/syscall_linux_gc_arm.go | 1 + .../x/sys/unix/syscall_linux_gccgo_386.go | 1 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 1 + .../x/sys/unix/syscall_linux_mips64x.go | 3 +- .../x/sys/unix/syscall_linux_mipsx.go | 9 +- .../x/sys/unix/syscall_linux_ppc64x.go | 5 +- .../x/sys/unix/syscall_linux_riscv64.go | 3 +- .../x/sys/unix/syscall_linux_s390x.go | 3 +- .../x/sys/unix/syscall_linux_sparc64.go | 5 +- .../golang.org/x/sys/unix/syscall_netbsd.go | 21 +- .../x/sys/unix/syscall_netbsd_386.go | 1 + .../x/sys/unix/syscall_netbsd_amd64.go | 1 + .../x/sys/unix/syscall_netbsd_arm.go | 1 + .../x/sys/unix/syscall_netbsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_openbsd.go | 4 +- .../x/sys/unix/syscall_openbsd_386.go | 1 + .../x/sys/unix/syscall_openbsd_amd64.go | 1 + .../x/sys/unix/syscall_openbsd_arm.go | 1 + .../x/sys/unix/syscall_openbsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_solaris.go | 3 +- .../x/sys/unix/syscall_solaris_amd64.go | 1 + vendor/golang.org/x/sys/unix/syscall_unix.go | 1 + .../golang.org/x/sys/unix/syscall_unix_gc.go | 5 +- .../x/sys/unix/syscall_unix_gc_ppc64x.go | 1 + .../x/sys/unix/syscall_zos_s390x.go | 1781 +++++++++++ vendor/golang.org/x/sys/unix/timestruct.go | 3 +- vendor/golang.org/x/sys/unix/xattr_bsd.go | 1 + .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1 + .../x/sys/unix/zerrors_aix_ppc64.go | 1 + .../x/sys/unix/zerrors_darwin_386.go | 1 + .../x/sys/unix/zerrors_darwin_amd64.go | 8 + .../x/sys/unix/zerrors_darwin_arm.go | 1 + .../x/sys/unix/zerrors_darwin_arm64.go | 8 + .../x/sys/unix/zerrors_dragonfly_amd64.go | 1 + .../x/sys/unix/zerrors_freebsd_386.go | 7 + .../x/sys/unix/zerrors_freebsd_amd64.go | 7 + .../x/sys/unix/zerrors_freebsd_arm.go | 7 + .../x/sys/unix/zerrors_freebsd_arm64.go | 7 + vendor/golang.org/x/sys/unix/zerrors_linux.go | 23 +- .../x/sys/unix/zerrors_linux_386.go | 11 + .../x/sys/unix/zerrors_linux_amd64.go | 11 + .../x/sys/unix/zerrors_linux_arm.go | 11 + .../x/sys/unix/zerrors_linux_arm64.go | 12 + .../x/sys/unix/zerrors_linux_mips.go | 11 + .../x/sys/unix/zerrors_linux_mips64.go | 11 + .../x/sys/unix/zerrors_linux_mips64le.go | 11 + .../x/sys/unix/zerrors_linux_mipsle.go | 11 + .../x/sys/unix/zerrors_linux_ppc64.go | 11 + .../x/sys/unix/zerrors_linux_ppc64le.go | 11 + .../x/sys/unix/zerrors_linux_riscv64.go | 11 + .../x/sys/unix/zerrors_linux_s390x.go | 11 + .../x/sys/unix/zerrors_linux_sparc64.go | 11 + .../x/sys/unix/zerrors_netbsd_386.go | 1 + .../x/sys/unix/zerrors_netbsd_amd64.go | 1 + .../x/sys/unix/zerrors_netbsd_arm.go | 1 + .../x/sys/unix/zerrors_netbsd_arm64.go | 1 + .../x/sys/unix/zerrors_openbsd_386.go | 1 + .../x/sys/unix/zerrors_openbsd_amd64.go | 1 + .../x/sys/unix/zerrors_openbsd_arm.go | 1 + .../x/sys/unix/zerrors_openbsd_arm64.go | 1 + .../x/sys/unix/zerrors_openbsd_mips64.go | 1 + .../x/sys/unix/zerrors_solaris_amd64.go | 1 + .../x/sys/unix/zerrors_zos_s390x.go | 831 +++++ .../x/sys/unix/zptrace_armnn_linux.go | 1 + .../x/sys/unix/zptrace_mipsnn_linux.go | 1 + .../x/sys/unix/zptrace_mipsnnle_linux.go | 1 + .../x/sys/unix/zptrace_x86_linux.go | 1 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1 + .../x/sys/unix/zsyscall_aix_ppc64.go | 1 + .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 4 +- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 4 +- .../x/sys/unix/zsyscall_darwin_386.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_386.go | 1 + .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_amd64.go | 1 + .../x/sys/unix/zsyscall_darwin_arm.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_arm.go | 1 + .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_arm64.go | 1 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 7 +- .../x/sys/unix/zsyscall_freebsd_386.go | 1 + .../x/sys/unix/zsyscall_freebsd_amd64.go | 1 + .../x/sys/unix/zsyscall_freebsd_arm.go | 1 + .../x/sys/unix/zsyscall_freebsd_arm64.go | 1 + .../x/sys/unix/zsyscall_illumos_amd64.go | 1 + .../golang.org/x/sys/unix/zsyscall_linux.go | 1 + .../x/sys/unix/zsyscall_linux_386.go | 1 + .../x/sys/unix/zsyscall_linux_amd64.go | 1 + .../x/sys/unix/zsyscall_linux_arm.go | 1 + .../x/sys/unix/zsyscall_linux_arm64.go | 1 + .../x/sys/unix/zsyscall_linux_mips.go | 1 + .../x/sys/unix/zsyscall_linux_mips64.go | 1 + .../x/sys/unix/zsyscall_linux_mips64le.go | 1 + .../x/sys/unix/zsyscall_linux_mipsle.go | 1 + .../x/sys/unix/zsyscall_linux_ppc64.go | 1 + .../x/sys/unix/zsyscall_linux_ppc64le.go | 1 + .../x/sys/unix/zsyscall_linux_riscv64.go | 1 + .../x/sys/unix/zsyscall_linux_s390x.go | 1 + .../x/sys/unix/zsyscall_linux_sparc64.go | 1 + .../x/sys/unix/zsyscall_netbsd_386.go | 11 + .../x/sys/unix/zsyscall_netbsd_amd64.go | 11 + .../x/sys/unix/zsyscall_netbsd_arm.go | 11 + .../x/sys/unix/zsyscall_netbsd_arm64.go | 11 + .../x/sys/unix/zsyscall_openbsd_386.go | 1 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 1 + .../x/sys/unix/zsyscall_openbsd_arm.go | 1 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 1 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 1 + .../x/sys/unix/zsyscall_solaris_amd64.go | 15 + .../x/sys/unix/zsyscall_zos_s390x.go | 1217 ++++++++ .../x/sys/unix/zsysctl_openbsd_386.go | 1 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 1 + .../x/sys/unix/zsysctl_openbsd_arm.go | 1 + .../x/sys/unix/zsysctl_openbsd_arm64.go | 1 + .../x/sys/unix/zsysctl_openbsd_mips64.go | 1 + .../x/sys/unix/zsysnum_darwin_386.go | 1 + .../x/sys/unix/zsysnum_darwin_amd64.go | 1 + .../x/sys/unix/zsysnum_darwin_arm.go | 1 + .../x/sys/unix/zsysnum_darwin_arm64.go | 1 + .../x/sys/unix/zsysnum_dragonfly_amd64.go | 1 + .../x/sys/unix/zsysnum_freebsd_386.go | 1 + .../x/sys/unix/zsysnum_freebsd_amd64.go | 1 + .../x/sys/unix/zsysnum_freebsd_arm.go | 1 + .../x/sys/unix/zsysnum_freebsd_arm64.go | 1 + .../x/sys/unix/zsysnum_linux_386.go | 2 + .../x/sys/unix/zsysnum_linux_amd64.go | 2 + .../x/sys/unix/zsysnum_linux_arm.go | 2 + .../x/sys/unix/zsysnum_linux_arm64.go | 2 + .../x/sys/unix/zsysnum_linux_mips.go | 2 + .../x/sys/unix/zsysnum_linux_mips64.go | 2 + .../x/sys/unix/zsysnum_linux_mips64le.go | 2 + .../x/sys/unix/zsysnum_linux_mipsle.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 2 + .../x/sys/unix/zsysnum_linux_riscv64.go | 2 + .../x/sys/unix/zsysnum_linux_s390x.go | 2 + .../x/sys/unix/zsysnum_linux_sparc64.go | 2 + .../x/sys/unix/zsysnum_netbsd_386.go | 1 + .../x/sys/unix/zsysnum_netbsd_amd64.go | 1 + .../x/sys/unix/zsysnum_netbsd_arm.go | 1 + .../x/sys/unix/zsysnum_netbsd_arm64.go | 1 + .../x/sys/unix/zsysnum_openbsd_386.go | 1 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 1 + .../x/sys/unix/zsysnum_openbsd_arm.go | 1 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 1 + .../x/sys/unix/zsysnum_openbsd_mips64.go | 1 + .../x/sys/unix/zsysnum_zos_s390x.go | 2670 +++++++++++++++++ .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 1 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 1 + .../x/sys/unix/ztypes_darwin_386.go | 1 + .../x/sys/unix/ztypes_darwin_amd64.go | 9 + .../x/sys/unix/ztypes_darwin_arm.go | 1 + .../x/sys/unix/ztypes_darwin_arm64.go | 9 + .../x/sys/unix/ztypes_dragonfly_amd64.go | 1 + .../x/sys/unix/ztypes_freebsd_386.go | 10 + .../x/sys/unix/ztypes_freebsd_amd64.go | 10 + .../x/sys/unix/ztypes_freebsd_arm.go | 10 + .../x/sys/unix/ztypes_freebsd_arm64.go | 10 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 35 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 1 + .../x/sys/unix/ztypes_linux_amd64.go | 1 + .../golang.org/x/sys/unix/ztypes_linux_arm.go | 1 + .../x/sys/unix/ztypes_linux_arm64.go | 1 + .../x/sys/unix/ztypes_linux_mips.go | 1 + .../x/sys/unix/ztypes_linux_mips64.go | 1 + .../x/sys/unix/ztypes_linux_mips64le.go | 1 + .../x/sys/unix/ztypes_linux_mipsle.go | 1 + .../x/sys/unix/ztypes_linux_ppc64.go | 1 + .../x/sys/unix/ztypes_linux_ppc64le.go | 1 + .../x/sys/unix/ztypes_linux_riscv64.go | 1 + .../x/sys/unix/ztypes_linux_s390x.go | 1 + .../x/sys/unix/ztypes_linux_sparc64.go | 1 + .../x/sys/unix/ztypes_netbsd_386.go | 1 + .../x/sys/unix/ztypes_netbsd_amd64.go | 1 + .../x/sys/unix/ztypes_netbsd_arm.go | 1 + .../x/sys/unix/ztypes_netbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_386.go | 1 + .../x/sys/unix/ztypes_openbsd_amd64.go | 1 + .../x/sys/unix/ztypes_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_openbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_mips64.go | 1 + .../x/sys/unix/ztypes_solaris_amd64.go | 1 + .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 402 +++ .../golang.org/x/sys/windows/exec_windows.go | 33 + .../x/sys/windows/syscall_windows.go | 15 +- .../golang.org/x/sys/windows/types_windows.go | 177 ++ .../x/sys/windows/types_windows_arm64.go | 34 + .../x/sys/windows/zsyscall_windows.go | 92 +- .../grpc/encoding/proto/proto.go | 14 +- vendor/google.golang.org/grpc/regenerate.sh | 5 + vendor/google.golang.org/grpc/rpc_util.go | 3 +- .../google.golang.org/grpc/status/status.go | 8 +- vendor/google.golang.org/grpc/version.go | 2 +- vendor/modules.txt | 24 +- 291 files changed, 9391 insertions(+), 304 deletions(-) create mode 100644 vendor/golang.org/x/sys/unix/asm_zos_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/dev_zos.go create mode 100644 vendor/golang.org/x/sys/unix/epoll_zos.go create mode 100644 vendor/golang.org/x/sys/unix/fstatfs_zos.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl_zos.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm64.go diff --git a/go.mod b/go.mod index fa4503144..c11bd8098 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/VictoriaMetrics/VictoriaMetrics require ( - cloud.google.com/go v0.77.0 // indirect + cloud.google.com/go v0.78.0 // indirect cloud.google.com/go/storage v1.13.0 github.com/VictoriaMetrics/fastcache v1.5.7 @@ -10,16 +10,17 @@ require ( github.com/VictoriaMetrics/fasthttp v1.0.12 github.com/VictoriaMetrics/metrics v1.15.0 github.com/VictoriaMetrics/metricsql v0.12.0 - github.com/aws/aws-sdk-go v1.37.12 + github.com/aws/aws-sdk-go v1.37.20 github.com/cespare/xxhash/v2 v2.1.1 github.com/cheggaaa/pb/v3 v3.0.6 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/fatih/color v1.10.0 // indirect - github.com/golang/snappy v0.0.2 + github.com/golang/snappy v0.0.3 github.com/influxdata/influxdb v1.8.4 - github.com/klauspost/compress v1.11.7 + github.com/klauspost/compress v1.11.8 github.com/mattn/go-runewidth v0.0.10 // indirect github.com/prometheus/client_golang v1.9.0 // indirect + github.com/prometheus/common v0.18.0 // indirect github.com/prometheus/procfs v0.6.0 // indirect github.com/prometheus/prometheus v1.8.2-0.20201119142752-3ad25a6dc3d9 github.com/rivo/uniseg v0.2.0 // indirect @@ -31,10 +32,14 @@ require ( github.com/valyala/gozstd v1.9.0 github.com/valyala/histogram v1.1.2 github.com/valyala/quicktemplate v1.6.3 - go.opencensus.io v0.22.6 // indirect - golang.org/x/oauth2 v0.0.0-20210216194517-16ff1888fd2e - golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65 + go.opencensus.io v0.23.0 // indirect + golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect + golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 google.golang.org/api v0.40.0 + google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 // indirect + google.golang.org/grpc v1.36.0 // indirect gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 8dfcad85f..f16da0f57 100644 --- a/go.sum +++ b/go.sum @@ -18,8 +18,8 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.77.0 h1:qA5V5+uQf6Mgr+tmFI8UT3D/ELyhIYkPwNGao/3Y+sQ= -cloud.google.com/go v0.77.0/go.mod h1:R8fYSLIilC247Iu8WS2OGHw1E/Ufn7Pd7HiDjTqiURs= +cloud.google.com/go v0.78.0 h1:oKpsiyKMfVpwR3zSAkQixGzlVE5ovitBuO0qSmCf0bI= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -123,8 +123,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.31/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.37.12 h1:rPdjZTlzHn+sbLEO+i535g+WpGf7QBDLYI7rDok+FHo= -github.com/aws/aws-sdk-go v1.37.12/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.37.20 h1:CJCXpMYmBJrRH8YwoSE0oB9S3J5ax+62F14sYlDCztg= +github.com/aws/aws-sdk-go v1.37.20/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -366,8 +366,9 @@ github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= @@ -507,8 +508,8 @@ github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.8 h1:difgzQsp5mdAz9v8lm3P/I+EpDKMU/6uTMw1y1FObuo= +github.com/klauspost/compress v1.11.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= @@ -671,8 +672,9 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.18.0 h1:WCVKW7aL6LEe1uryfI9dnEc2ZqNB1Fn0ok930v0iL1Y= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -795,8 +797,8 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.22.6 h1:BdkrbWrzDlV9dnbzoP7sfN+dHheJ4J9JOaYxcUDL+ok= -go.opencensus.io v0.22.6/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= @@ -909,8 +911,9 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -920,8 +923,9 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210216194517-16ff1888fd2e h1:xxTKAjlluPXFVQnUNoBO7OvmNNE/RpmyUeLVFSYiQQ0= -golang.org/x/oauth2 v0.0.0-20210216194517-16ff1888fd2e/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93 h1:alLDrZkL34Y2bnGHfvC1CYBRBXCXgx8AC2vY4MRtYX4= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -932,8 +936,9 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -999,8 +1004,9 @@ golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65 h1:pTMjDVnP5eVRRlWO76rEWJ8JoC6Lf1CmyjPZXRiy2Sw= -golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 h1:V066+OYJ66oTjnhm4Yrn7SXIwSCiDQJxpBxmvqb1N1c= +golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1168,8 +1174,9 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210203152818-3206188e46ba/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210212180131-e7f2df4ecc2d h1:Edhcm0CKDPLQIecHCp5Iz57Lo7MfT6zUFBAlocmOjcY= -google.golang.org/genproto v0.0.0-20210212180131-e7f2df4ecc2d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 h1:PYBmACG+YEv8uQPW0r1kJj8tR+gkF0UWq7iFdUezwEw= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1191,8 +1198,9 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/vendor/cloud.google.com/go/CHANGES.md b/vendor/cloud.google.com/go/CHANGES.md index f411d53eb..6409461e1 100644 --- a/vendor/cloud.google.com/go/CHANGES.md +++ b/vendor/cloud.google.com/go/CHANGES.md @@ -1,6 +1,25 @@ # Changes +## [0.78.0](https://www.github.com/googleapis/google-cloud-go/compare/v0.77.0...v0.78.0) (2021-02-22) + + +### Features + +* **area120/tables:** Added ListWorkspaces, GetWorkspace, BatchDeleteRows APIs. ([16597fa](https://www.github.com/googleapis/google-cloud-go/commit/16597fa1ce549053c7183e8456e23f554a5501de)) +* **area120/tables:** Added ListWorkspaces, GetWorkspace, BatchDeleteRows APIs. ([0bd21d7](https://www.github.com/googleapis/google-cloud-go/commit/0bd21d793f75924e5a2d033c58e8aaef89cf8113)) +* **dialogflow:** add additional_bindings to Dialogflow v2 ListIntents API docs: update copyrights and session docs ([0bd21d7](https://www.github.com/googleapis/google-cloud-go/commit/0bd21d793f75924e5a2d033c58e8aaef89cf8113)) +* **documentai:** Update documentai/v1beta3 protos ([613ced7](https://www.github.com/googleapis/google-cloud-go/commit/613ced702bbc82a154a4d3641b483f71c7cd1af4)) +* **gkehub:** Update Membership API v1beta1 proto ([613ced7](https://www.github.com/googleapis/google-cloud-go/commit/613ced702bbc82a154a4d3641b483f71c7cd1af4)) +* **servicecontrol:** Update the ruby_cloud_gapic_library rules for the libraries published to google-cloud-ruby to the form that works with build_gen (separate parameters for ruby_cloud_title and ruby_cloud_description). chore: Update Bazel-Ruby rules version. chore: Update build_gen version. ([0bd21d7](https://www.github.com/googleapis/google-cloud-go/commit/0bd21d793f75924e5a2d033c58e8aaef89cf8113)) +* **speech:** Support Model Adaptation. ([0bd21d7](https://www.github.com/googleapis/google-cloud-go/commit/0bd21d793f75924e5a2d033c58e8aaef89cf8113)) + + +### Bug Fixes + +* **dialogflow/cx:** RunTestCase http template. PHP REST client lib can be generated. feat: Support transition route group coverage for Test Cases. ([613ced7](https://www.github.com/googleapis/google-cloud-go/commit/613ced702bbc82a154a4d3641b483f71c7cd1af4)) +* **errorreporting:** Fixes ruby gem build ([0bd21d7](https://www.github.com/googleapis/google-cloud-go/commit/0bd21d793f75924e5a2d033c58e8aaef89cf8113)) + ## [0.77.0](https://www.github.com/googleapis/google-cloud-go/compare/v0.76.0...v0.77.0) (2021-02-16) diff --git a/vendor/cloud.google.com/go/README.md b/vendor/cloud.google.com/go/README.md index dd7a75a5d..ba024f5ab 100644 --- a/vendor/cloud.google.com/go/README.md +++ b/vendor/cloud.google.com/go/README.md @@ -54,6 +54,7 @@ make backwards-incompatible changes. | [Monitoring][cloud-monitoring] | stable | [`cloud.google.com/go/monitoring/apiv3`](https://pkg.go.dev/cloud.google.com/go/monitoring/apiv3) | | [OS Login][cloud-oslogin] | stable | [`cloud.google.com/go/oslogin/apiv1`](https://pkg.go.dev/cloud.google.com/go/oslogin/apiv1) | | [Pub/Sub][cloud-pubsub] | stable | [`cloud.google.com/go/pubsub`](https://pkg.go.dev/cloud.google.com/go/pubsub) | +| [Pub/Sub Lite][cloud-pubsublite] | beta | [`cloud.google.com/go/pubsublite`](https://pkg.go.dev/cloud.google.com/go/pubsublite) | | [Phishing Protection][cloud-phishingprotection] | alpha | [`cloud.google.com/go/phishingprotection/apiv1beta1`](https://pkg.go.dev/cloud.google.com/go/phishingprotection/apiv1beta1) | | [reCAPTCHA Enterprise][cloud-recaptcha] | alpha | [`cloud.google.com/go/recaptchaenterprise/apiv1beta1`](https://pkg.go.dev/cloud.google.com/go/recaptchaenterprise/apiv1beta1) | | [Recommender][cloud-recommender] | beta | [`cloud.google.com/go/recommender/apiv1beta1`](https://pkg.go.dev/cloud.google.com/go/recommender/apiv1beta1) | @@ -150,6 +151,7 @@ for more information. [cloud-irm]: https://cloud.google.com/incident-response/docs/concepts [cloud-kms]: https://cloud.google.com/kms/ [cloud-pubsub]: https://cloud.google.com/pubsub/ +[cloud-pubsublite]: https://cloud.google.com/pubsub/lite [cloud-storage]: https://cloud.google.com/storage/ [cloud-language]: https://cloud.google.com/natural-language [cloud-logging]: https://cloud.google.com/logging/ diff --git a/vendor/cloud.google.com/go/go.mod b/vendor/cloud.google.com/go/go.mod index 5d0760095..f675453dd 100644 --- a/vendor/cloud.google.com/go/go.mod +++ b/vendor/cloud.google.com/go/go.mod @@ -15,11 +15,11 @@ require ( golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 golang.org/x/mod v0.4.1 // indirect golang.org/x/net v0.0.0-20210119194325-5f4716e94777 - golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3 - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c // indirect + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 + golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43 // indirect golang.org/x/text v0.3.5 golang.org/x/tools v0.1.0 google.golang.org/api v0.40.0 - google.golang.org/genproto v0.0.0-20210212180131-e7f2df4ecc2d + google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c google.golang.org/grpc v1.35.0 ) diff --git a/vendor/cloud.google.com/go/go.sum b/vendor/cloud.google.com/go/go.sum index efe29ae37..9dc948c58 100644 --- a/vendor/cloud.google.com/go/go.sum +++ b/vendor/cloud.google.com/go/go.sum @@ -262,8 +262,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3 h1:BaN3BAqnopnKjvl+15DYP6LLrbBHfbfmlFYzmFj/Q9Q= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 h1:5vD4XjIc0X5+kHZjx4UecYdjA6mJo+XXNoaW0EjU5Os= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -305,9 +305,10 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43 h1:SgQ6LNaYJU0JIuEHv9+s6EbhSCwYeAf5Yvj6lpYlqAE= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -434,8 +435,8 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210212180131-e7f2df4ecc2d h1:Edhcm0CKDPLQIecHCp5Iz57Lo7MfT6zUFBAlocmOjcY= -google.golang.org/genproto v0.0.0-20210212180131-e7f2df4ecc2d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c h1:7A9LQhrZmuCPI79/sYSbscFqBp4XFYf6oaIQuV1xji4= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json index fcf428791..6e1443425 100644 --- a/vendor/cloud.google.com/go/internal/.repo-metadata-full.json +++ b/vendor/cloud.google.com/go/internal/.repo-metadata-full.json @@ -29,7 +29,7 @@ "language": "Go", "client_library_type": "generated", "docs_url": "https://pkg.go.dev/cloud.google.com/go/appengine/apiv1", - "release_level": "beta" + "release_level": "ga" }, "cloud.google.com/go/area120/tables/apiv1alpha1": { "distribution_name": "cloud.google.com/go/area120/tables/apiv1alpha1", @@ -221,7 +221,7 @@ "language": "Go", "client_library_type": "generated", "docs_url": "https://pkg.go.dev/cloud.google.com/go/channel/apiv1", - "release_level": "beta" + "release_level": "ga" }, "cloud.google.com/go/cloudbuild/apiv1/v2": { "distribution_name": "cloud.google.com/go/cloudbuild/apiv1/v2", diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go index e42c5cdbb..260a37cbb 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go @@ -95,7 +95,7 @@ import ( // StdinTokenProvider will prompt on stderr and read from stdin for a string value. // An error is returned if reading from stdin fails. // -// Use this function go read MFA tokens from stdin. The function makes no attempt +// Use this function to read MFA tokens from stdin. The function makes no attempt // to make atomic prompts from stdin across multiple gorouties. // // Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index f472e558c..a07e83e74 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -1765,7 +1765,10 @@ var awsPartition = partition{ "contact-lens": service{ Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-2": endpoint{}, "us-east-1": endpoint{}, "us-west-2": endpoint{}, }, @@ -6582,6 +6585,7 @@ var awsPartition = partition{ "transfer": service{ Endpoints: endpoints{ + "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, @@ -6623,11 +6627,12 @@ var awsPartition = partition{ Region: "us-west-2", }, }, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "translate": service{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 1022b01df..0c403a140 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.37.12" +const SDKVersion = "1.37.20" diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go index 89a0a29af..cc1f3dbf5 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go @@ -2852,9 +2852,12 @@ func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *r // GetBucketEncryption API operation for Amazon Simple Storage Service. // -// Returns the default encryption configuration for an Amazon S3 bucket. For -// information about the Amazon S3 default encryption feature, see Amazon S3 -// Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). +// Returns the default encryption configuration for an Amazon S3 bucket. If +// the bucket does not have a default encryption configuration, GetBucketEncryption +// returns ServerSideEncryptionConfigurationNotFoundError. +// +// For information about the Amazon S3 default encryption feature, see Amazon +// S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). // // To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration // action. The bucket owner has this permission by default. The bucket owner @@ -5042,6 +5045,8 @@ func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request // // * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) // +// * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -5302,8 +5307,12 @@ func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, ou // // This operation is useful to determine if a bucket exists and you have permission // to access it. The operation returns a 200 OK if the bucket exists and you -// have permission to access it. Otherwise, the operation might return responses -// such as 404 Not Found and 403 Forbidden. +// have permission to access it. +// +// If the bucket does not exist or you do not have permission to access it, +// the HEAD request returns a generic 404 Not Found or 403 Forbidden code. A +// message body is not included, so you cannot determine the exception beyond +// these error codes. // // To use this operation, you must have permissions to perform the s3:ListBucket // action. The bucket owner has this permission by default and can grant this @@ -5394,7 +5403,9 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou // // A HEAD request has the same options as a GET operation on an object. The // response is identical to the GET response except that there is no response -// body. +// body. Because of this, if the HEAD request generates an error, it returns +// a generic 404 Not Found or 403 Forbidden code. It is not possible to retrieve +// the exact exception beyond these error codes. // // If you encrypt an object by using server-side encryption with customer-provided // encryption keys (SSE-C) when you store the object in Amazon S3, then when @@ -5409,11 +5420,14 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou // For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided // Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). // -// Encryption request headers, like x-amz-server-side-encryption, should not -// be sent for GET requests if your object uses server-side encryption with -// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed -// encryption keys (SSE-S3). If your object does use these types of keys, you’ll -// get an HTTP 400 BadRequest error. +// * Encryption request headers, like x-amz-server-side-encryption, should +// not be sent for GET requests if your object uses server-side encryption +// with CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon +// S3–managed encryption keys (SSE-S3). If your object does use these types +// of keys, you’ll get an HTTP 400 BadRequest error. +// +// * The last modified property in this case is the creation date of the +// object. // // Request headers are limited to 8 KB in size. For more information, see Common // Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html). @@ -6482,7 +6496,8 @@ func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Reque // the request parameters as selection criteria to return a subset of the objects // in a bucket. A 200 OK response can contain valid or invalid XML. Make sure // to design your application to parse the contents of the response and handle -// it appropriately. +// it appropriately. Objects are returned sorted in an ascending order of the +// respective key names in the list. // // To use this operation, you must have READ access to the bucket. // @@ -7415,7 +7430,8 @@ func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketInt // PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service. // -// Puts a S3 Intelligent-Tiering configuration to the specified bucket. +// Puts a S3 Intelligent-Tiering configuration to the specified bucket. You +// can have up to 1,000 S3 Intelligent-Tiering configurations per bucket. // // The S3 Intelligent-Tiering storage class is designed to optimize storage // costs by automatically moving data to the most cost-effective storage access @@ -7442,6 +7458,22 @@ func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketInt // // * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html) // +// You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically +// move objects stored in the S3 Intelligent-Tiering storage class to the Archive +// Access or Deep Archive Access tier. +// +// Special Errors +// +// * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument +// +// * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are +// attempting to create a new configuration but have already reached the +// 1,000-configuration limit. +// +// * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner +// of the specified bucket, or you do not have the s3:PutIntelligentTieringConfiguration +// bucket permission to set the configuration on the bucket. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -9751,6 +9783,8 @@ func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request // // * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) // +// * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -12341,6 +12375,10 @@ type Condition struct { // the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals // is not specified. If both conditions are specified, both must be true for // the redirect to be applied. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). KeyPrefixEquals *string `type:"string"` } @@ -13083,10 +13121,10 @@ type CopyObjectResult struct { // Returns the ETag of the new object. The ETag reflects only changes to the // contents of an object, not its metadata. The source and destination ETag - // is identical for a successfully copied object. + // is identical for a successfully copied non-multipart object. ETag *string `type:"string"` - // Returns the date that the object was last modified. + // Creation date of the object. LastModified *time.Time `type:"timestamp"` } @@ -15667,7 +15705,8 @@ type DeleteObjectTaggingInput struct { // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` - // Name of the object key. + // The key that identifies the object in the bucket from which to remove all + // tags. // // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` @@ -16821,6 +16860,10 @@ type ErrorDocument struct { // The object key name to use when a 4XX class error occurs. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Key is a required field Key *string `min:"1" type:"string" required:"true"` } @@ -19565,14 +19608,14 @@ type GetObjectInput struct { // Sets the Expires header of the response. ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"` - // Specifies the algorithm to use to when encrypting the object (for example, + // Specifies the algorithm to use to when decrypting the object (for example, // AES256). SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` - // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting - // data. This value is used to store the object and then it is discarded; Amazon - // S3 does not store the encryption key. The key must be appropriate for use - // with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm + // Specifies the customer-provided encryption key for Amazon S3 used to encrypt + // the data. This value is used to decrypt the object when recovering it and + // must match the one used when storing the data. The key must be appropriate + // for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm // header. SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` @@ -20103,7 +20146,7 @@ type GetObjectOutput struct { // The date and time at which the object is no longer cacheable. Expires *string `location:"header" locationName:"Expires" type:"string"` - // Last modified date of the object + // Creation date of the object. LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` // A map of metadata to store with the object in S3. @@ -20570,6 +20613,13 @@ type GetObjectTaggingInput struct { // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + // Confirms that the requester knows that they will be charged for the request. + // Bucket owners need not specify this parameter in their requests. For information + // about downloading objects from requester pays buckets, see Downloading Objects + // in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) + // in the Amazon S3 Developer Guide. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + // The versionId of the object for which to get the tagging information. VersionId *string `location:"querystring" locationName:"versionId" type:"string"` } @@ -20631,6 +20681,12 @@ func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput { return s } +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectTaggingInput) SetRequestPayer(v string) *GetObjectTaggingInput { + s.RequestPayer = &v + return s +} + // SetVersionId sets the VersionId field's value. func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput { s.VersionId = &v @@ -21555,7 +21611,7 @@ type HeadObjectOutput struct { // The date and time at which the object is no longer cacheable. Expires *string `location:"header" locationName:"Expires" type:"string"` - // Last modified date of the object + // Creation date of the object. LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` // A map of metadata to store with the object in S3. @@ -21881,6 +21937,10 @@ type IndexDocument struct { // with the key name images/index.html) The suffix must not be empty and must // not include a slash character. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Suffix is a required field Suffix *string `type:"string" required:"true"` } @@ -22164,6 +22224,10 @@ type IntelligentTieringFilter struct { // An object key name prefix that identifies the subset of objects to which // the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // A container of a key value name pair. @@ -22911,6 +22975,10 @@ type LifecycleRule struct { // Prefix identifying one or more objects to which the rule applies. This is // No longer used; use Filter instead. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Deprecated: Prefix has been deprecated Prefix *string `deprecated:"true" type:"string"` @@ -23073,6 +23141,10 @@ type LifecycleRuleFilter struct { And *LifecycleRuleAndOperator `type:"structure"` // Prefix identifying one or more objects to which the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // This tag must exist in the object's tag set in order for the rule to apply. @@ -24579,8 +24651,8 @@ func (s ListObjectsInput) updateArnableField(v string) (interface{}, error) { type ListObjectsOutput struct { _ struct{} `type:"structure"` - // All of the keys rolled up in a common prefix count as a single return when - // calculating the number of returns. + // All of the keys (up to 1,000) rolled up in a common prefix count as a single + // return when calculating the number of returns. // // A response can contain CommonPrefixes only if you specify a delimiter. // @@ -24891,8 +24963,8 @@ func (s ListObjectsV2Input) updateArnableField(v string) (interface{}, error) { type ListObjectsV2Output struct { _ struct{} `type:"structure"` - // All of the keys rolled up into a common prefix count as a single return when - // calculating the number of returns. + // All of the keys (up to 1,000) rolled up into a common prefix count as a single + // return when calculating the number of returns. // // A response can contain CommonPrefixes only if you specify a delimiter. // @@ -24936,8 +25008,8 @@ type ListObjectsV2Output struct { IsTruncated *bool `type:"boolean"` // KeyCount is the number of keys returned with this request. KeyCount will - // always be less than equals to MaxKeys field. Say you ask for 50 keys, your - // result will include less than equals 50 keys + // always be less than or equals to MaxKeys field. Say you ask for 50 keys, + // your result will include less than equals 50 keys KeyCount *int64 `type:"integer"` // Sets the maximum number of keys returned in the response. By default the @@ -26195,7 +26267,7 @@ type Object struct { // the object. Key *string `min:"1" type:"string"` - // The date the Object was Last Modified + // Creation date of the object. LastModified *time.Time `type:"timestamp"` // The owner of the object @@ -26258,7 +26330,11 @@ func (s *Object) SetStorageClass(v string) *Object { type ObjectIdentifier struct { _ struct{} `type:"structure"` - // Key name of the object to delete. + // Key name of the object. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). // // Key is a required field Key *string `min:"1" type:"string" required:"true"` @@ -30815,6 +30891,13 @@ type PutObjectTaggingInput struct { // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + // Confirms that the requester knows that they will be charged for the request. + // Bucket owners need not specify this parameter in their requests. For information + // about downloading objects from requester pays buckets, see Downloading Objects + // in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) + // in the Amazon S3 Developer Guide. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + // Container for the TagSet and Tag elements // // Tagging is a required field @@ -30889,6 +30972,12 @@ func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput { return s } +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectTaggingInput) SetRequestPayer(v string) *PutObjectTaggingInput { + s.RequestPayer = &v + return s +} + // SetTagging sets the Tagging field's value. func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput { s.Tagging = v @@ -31275,11 +31364,19 @@ type Redirect struct { // and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required // if one of the siblings is present. Can be present only if ReplaceKeyWith // is not provided. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). ReplaceKeyPrefixWith *string `type:"string"` // The specific object key to use in the redirect request. For example, redirect // request to error.html. Not required if one of the siblings is present. Can // be present only if ReplaceKeyPrefixWith is not provided. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). ReplaceKeyWith *string `type:"string"` } @@ -31529,6 +31626,10 @@ type ReplicationRule struct { // the rule applies. The maximum prefix length is 1,024 characters. To include // all objects in a bucket, specify an empty string. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Deprecated: Prefix has been deprecated Prefix *string `deprecated:"true" type:"string"` @@ -31737,6 +31838,10 @@ type ReplicationRuleFilter struct { // An object key name prefix that identifies the subset of objects to which // the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // A container for specifying a tag key and value. @@ -32332,6 +32437,10 @@ type Rule struct { // Object key prefix that identifies one or more objects to which this rule // applies. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Prefix is a required field Prefix *string `type:"string" required:"true"` diff --git a/vendor/github.com/golang/snappy/decode_arm64.s b/vendor/github.com/golang/snappy/decode_arm64.s index bfafa0ccf..7a3ead17e 100644 --- a/vendor/github.com/golang/snappy/decode_arm64.s +++ b/vendor/github.com/golang/snappy/decode_arm64.s @@ -70,7 +70,7 @@ loop: // x := uint32(src[s] >> 2) // switch MOVW $60, R1 - ADD R4>>2, ZR, R4 + LSRW $2, R4, R4 CMPW R4, R1 BLS tagLit60Plus @@ -111,13 +111,12 @@ doLit: // is contiguous in memory and so it needs to leave enough source bytes to // read the next tag without refilling buffers, but Go's Decode assumes // contiguousness (the src argument is a []byte). - MOVD $16, R1 - CMP R1, R4 - BGT callMemmove - CMP R1, R2 - BLT callMemmove - CMP R1, R3 - BLT callMemmove + CMP $16, R4 + BGT callMemmove + CMP $16, R2 + BLT callMemmove + CMP $16, R3 + BLT callMemmove // !!! Implement the copy from src to dst as a 16-byte load and store. // (Decode's documentation says that dst and src must not overlap.) @@ -130,9 +129,8 @@ doLit: // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or // 16-byte loads and stores. This technique probably wouldn't be as // effective on architectures that are fussier about alignment. - - VLD1 0(R6), [V0.B16] - VST1 [V0.B16], 0(R7) + LDP 0(R6), (R14, R15) + STP (R14, R15), 0(R7) // d += length // s += length @@ -210,8 +208,7 @@ tagLit61: B doLit tagLit62Plus: - MOVW $62, R1 - CMPW R1, R4 + CMPW $62, R4 BHI tagLit63 // case x == 62: @@ -273,10 +270,9 @@ tagCopy: // We have a copy tag. We assume that: // - R3 == src[s] & 0x03 // - R4 == src[s] - MOVD $2, R1 - CMP R1, R3 - BEQ tagCopy2 - BGT tagCopy4 + CMP $2, R3 + BEQ tagCopy2 + BGT tagCopy4 // case tagCopy1: // s += 2 @@ -346,13 +342,11 @@ doCopy: // } // copy 16 bytes // d += length - MOVD $16, R1 - MOVD $8, R0 - CMP R1, R4 + CMP $16, R4 BGT slowForwardCopy - CMP R0, R5 + CMP $8, R5 BLT slowForwardCopy - CMP R1, R14 + CMP $16, R14 BLT slowForwardCopy MOVD 0(R15), R2 MOVD R2, 0(R7) @@ -426,8 +420,7 @@ makeOffsetAtLeast8: // // The two previous lines together means that d-offset, and therefore // // R15, is unchanged. // } - MOVD $8, R1 - CMP R1, R5 + CMP $8, R5 BGE fixUpSlowForwardCopy MOVD (R15), R3 MOVD R3, (R7) @@ -477,9 +470,7 @@ verySlowForwardCopy: ADD $1, R15, R15 ADD $1, R7, R7 SUB $1, R4, R4 - MOVD $0, R1 - CMP R1, R4 - BNE verySlowForwardCopy + CBNZ R4, verySlowForwardCopy B loop // The code above handles copy tags. diff --git a/vendor/github.com/golang/snappy/encode_arm64.s b/vendor/github.com/golang/snappy/encode_arm64.s index 1f565ee75..bf83667d7 100644 --- a/vendor/github.com/golang/snappy/encode_arm64.s +++ b/vendor/github.com/golang/snappy/encode_arm64.s @@ -35,11 +35,9 @@ TEXT ·emitLiteral(SB), NOSPLIT, $32-56 MOVW R3, R4 SUBW $1, R4, R4 - MOVW $60, R2 - CMPW R2, R4 + CMPW $60, R4 BLT oneByte - MOVW $256, R2 - CMPW R2, R4 + CMPW $256, R4 BLT twoBytes threeBytes: @@ -98,8 +96,7 @@ TEXT ·emitCopy(SB), NOSPLIT, $0-48 loop0: // for length >= 68 { etc } - MOVW $68, R2 - CMPW R2, R3 + CMPW $68, R3 BLT step1 // Emit a length 64 copy, encoded as 3 bytes. @@ -112,9 +109,8 @@ loop0: step1: // if length > 64 { etc } - MOVD $64, R2 - CMP R2, R3 - BLE step2 + CMP $64, R3 + BLE step2 // Emit a length 60 copy, encoded as 3 bytes. MOVD $0xee, R2 @@ -125,11 +121,9 @@ step1: step2: // if length >= 12 || offset >= 2048 { goto step3 } - MOVD $12, R2 - CMP R2, R3 + CMP $12, R3 BGE step3 - MOVW $2048, R2 - CMPW R2, R11 + CMPW $2048, R11 BGE step3 // Emit the remaining copy, encoded as 2 bytes. @@ -295,27 +289,24 @@ varTable: // var table [maxTableSize]uint16 // // In the asm code, unlike the Go code, we can zero-initialize only the - // first tableSize elements. Each uint16 element is 2 bytes and each VST1 - // writes 64 bytes, so we can do only tableSize/32 writes instead of the - // 2048 writes that would zero-initialize all of table's 32768 bytes. - // This clear could overrun the first tableSize elements, but it won't - // overrun the allocated stack size. + // first tableSize elements. Each uint16 element is 2 bytes and each + // iterations writes 64 bytes, so we can do only tableSize/32 writes + // instead of the 2048 writes that would zero-initialize all of table's + // 32768 bytes. This clear could overrun the first tableSize elements, but + // it won't overrun the allocated stack size. ADD $128, RSP, R17 MOVD R17, R4 // !!! R6 = &src[tableSize] ADD R6<<1, R17, R6 - // zero the SIMD registers - VEOR V0.B16, V0.B16, V0.B16 - VEOR V1.B16, V1.B16, V1.B16 - VEOR V2.B16, V2.B16, V2.B16 - VEOR V3.B16, V3.B16, V3.B16 - memclr: - VST1.P [V0.B16, V1.B16, V2.B16, V3.B16], 64(R4) - CMP R4, R6 - BHI memclr + STP.P (ZR, ZR), 64(R4) + STP (ZR, ZR), -48(R4) + STP (ZR, ZR), -32(R4) + STP (ZR, ZR), -16(R4) + CMP R4, R6 + BHI memclr // !!! R6 = &src[0] MOVD R7, R6 @@ -404,8 +395,7 @@ fourByteMatch: // on inputMargin in encode.go. MOVD R7, R3 SUB R10, R3, R3 - MOVD $16, R2 - CMP R2, R3 + CMP $16, R3 BLE emitLiteralFastPath // ---------------------------------------- @@ -454,18 +444,21 @@ inlineEmitLiteralMemmove: MOVD R3, 24(RSP) // Finish the "d +=" part of "d += emitLiteral(etc)". - ADD R3, R8, R8 - MOVD R7, 80(RSP) - MOVD R8, 88(RSP) - MOVD R15, 120(RSP) - CALL runtime·memmove(SB) - MOVD 64(RSP), R5 - MOVD 72(RSP), R6 - MOVD 80(RSP), R7 - MOVD 88(RSP), R8 - MOVD 96(RSP), R9 - MOVD 120(RSP), R15 - B inner1 + ADD R3, R8, R8 + MOVD R7, 80(RSP) + MOVD R8, 88(RSP) + MOVD R15, 120(RSP) + CALL runtime·memmove(SB) + MOVD 64(RSP), R5 + MOVD 72(RSP), R6 + MOVD 80(RSP), R7 + MOVD 88(RSP), R8 + MOVD 96(RSP), R9 + MOVD 120(RSP), R15 + ADD $128, RSP, R17 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + B inner1 inlineEmitLiteralEnd: // End inline of the emitLiteral call. @@ -489,9 +482,9 @@ emitLiteralFastPath: // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or // 16-byte loads and stores. This technique probably wouldn't be as // effective on architectures that are fussier about alignment. - VLD1 0(R10), [V0.B16] - VST1 [V0.B16], 0(R8) - ADD R3, R8, R8 + LDP 0(R10), (R0, R1) + STP (R0, R1), 0(R8) + ADD R3, R8, R8 inner1: // for { etc } diff --git a/vendor/github.com/klauspost/compress/zstd/enc_best.go b/vendor/github.com/klauspost/compress/zstd/enc_best.go index c4baa42c6..bb71d1eea 100644 --- a/vendor/github.com/klauspost/compress/zstd/enc_best.go +++ b/vendor/github.com/klauspost/compress/zstd/enc_best.go @@ -112,7 +112,7 @@ func (e *bestFastEncoder) Encode(blk *blockEnc, src []byte) { // Override src src = e.hist sLimit := int32(len(src)) - inputMargin - const kSearchStrength = 12 + const kSearchStrength = 10 // nextEmit is where in src the next emitLiteral should start from. nextEmit := s @@ -186,9 +186,11 @@ encodeLoop: best = bestOf(best, matchAt(s-offset1+1, s+1, uint32(cv>>8), 1)) best = bestOf(best, matchAt(s-offset2+1, s+1, uint32(cv>>8), 2)) best = bestOf(best, matchAt(s-offset3+1, s+1, uint32(cv>>8), 3)) - best = bestOf(best, matchAt(s-offset1+3, s+3, uint32(cv>>24), 1)) - best = bestOf(best, matchAt(s-offset2+3, s+3, uint32(cv>>24), 2)) - best = bestOf(best, matchAt(s-offset3+3, s+3, uint32(cv>>24), 3)) + if best.length > 0 { + best = bestOf(best, matchAt(s-offset1+3, s+3, uint32(cv>>24), 1)) + best = bestOf(best, matchAt(s-offset2+3, s+3, uint32(cv>>24), 2)) + best = bestOf(best, matchAt(s-offset3+3, s+3, uint32(cv>>24), 3)) + } } // Load next and check... e.longTable[nextHashL] = prevEntry{offset: s + e.cur, prev: candidateL.offset} diff --git a/vendor/github.com/klauspost/compress/zstd/enc_fast.go b/vendor/github.com/klauspost/compress/zstd/enc_fast.go index 0b301df43..0045016d9 100644 --- a/vendor/github.com/klauspost/compress/zstd/enc_fast.go +++ b/vendor/github.com/klauspost/compress/zstd/enc_fast.go @@ -78,7 +78,7 @@ func (e *fastEncoder) Encode(blk *blockEnc, src []byte) { // TEMPLATE const hashLog = tableBits // seems global, but would be nice to tweak. - const kSearchStrength = 8 + const kSearchStrength = 7 // nextEmit is where in src the next emitLiteral should start from. nextEmit := s diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go index c40e6403c..77b82b2ba 100644 --- a/vendor/github.com/prometheus/common/model/time.go +++ b/vendor/github.com/prometheus/common/model/time.go @@ -254,6 +254,18 @@ func (d Duration) String() string { return r } +// MarshalText implements the encoding.TextMarshaler interface. +func (d *Duration) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +func (d *Duration) UnmarshalText(text []byte) error { + var err error + *d, err = ParseDuration(string(text)) + return err +} + // MarshalYAML implements the yaml.Marshaler interface. func (d Duration) MarshalYAML() (interface{}, error) { return d.String(), nil diff --git a/vendor/golang.org/x/net/context/go17.go b/vendor/golang.org/x/net/context/go17.go index d20f52b7d..344bd1433 100644 --- a/vendor/golang.org/x/net/context/go17.go +++ b/vendor/golang.org/x/net/context/go17.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.7 // +build go1.7 package context diff --git a/vendor/golang.org/x/net/context/go19.go b/vendor/golang.org/x/net/context/go19.go index d88bd1db1..64d31ecc3 100644 --- a/vendor/golang.org/x/net/context/go19.go +++ b/vendor/golang.org/x/net/context/go19.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.9 // +build go1.9 package context diff --git a/vendor/golang.org/x/net/context/pre_go17.go b/vendor/golang.org/x/net/context/pre_go17.go index 0f35592df..5270db5db 100644 --- a/vendor/golang.org/x/net/context/pre_go17.go +++ b/vendor/golang.org/x/net/context/pre_go17.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.7 // +build !go1.7 package context diff --git a/vendor/golang.org/x/net/context/pre_go19.go b/vendor/golang.org/x/net/context/pre_go19.go index b105f80be..1f9715341 100644 --- a/vendor/golang.org/x/net/context/pre_go19.go +++ b/vendor/golang.org/x/net/context/pre_go19.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.9 // +build !go1.9 package context diff --git a/vendor/golang.org/x/net/http2/go111.go b/vendor/golang.org/x/net/http2/go111.go index 3a131016b..5bf62b032 100644 --- a/vendor/golang.org/x/net/http2/go111.go +++ b/vendor/golang.org/x/net/http2/go111.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.11 // +build go1.11 package http2 diff --git a/vendor/golang.org/x/net/http2/not_go111.go b/vendor/golang.org/x/net/http2/not_go111.go index 161bca7ce..cc0baa819 100644 --- a/vendor/golang.org/x/net/http2/not_go111.go +++ b/vendor/golang.org/x/net/http2/not_go111.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.11 // +build !go1.11 package http2 diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 2aa859f76..e125bbd2a 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -1293,7 +1293,9 @@ func (sc *serverConn) startGracefulShutdown() { sc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) }) } -// After sending GOAWAY, the connection will close after goAwayTimeout. +// After sending GOAWAY with an error code (non-graceful shutdown), the +// connection will close after goAwayTimeout. +// // If we close the connection immediately after sending GOAWAY, there may // be unsent data in our kernel receive buffer, which will cause the kernel // to send a TCP RST on close() instead of a FIN. This RST will abort the @@ -1629,23 +1631,37 @@ func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { func (sc *serverConn) processData(f *DataFrame) error { sc.serveG.check() - if sc.inGoAway && sc.goAwayCode != ErrCodeNo { + id := f.Header().StreamID + if sc.inGoAway && (sc.goAwayCode != ErrCodeNo || id > sc.maxClientStreamID) { + // Discard all DATA frames if the GOAWAY is due to an + // error, or: + // + // Section 6.8: After sending a GOAWAY frame, the sender + // can discard frames for streams initiated by the + // receiver with identifiers higher than the identified + // last stream. return nil } - data := f.Data() - // "If a DATA frame is received whose stream is not in "open" - // or "half closed (local)" state, the recipient MUST respond - // with a stream error (Section 5.4.2) of type STREAM_CLOSED." - id := f.Header().StreamID + data := f.Data() state, st := sc.state(id) if id == 0 || state == stateIdle { + // Section 6.1: "DATA frames MUST be associated with a + // stream. If a DATA frame is received whose stream + // identifier field is 0x0, the recipient MUST respond + // with a connection error (Section 5.4.1) of type + // PROTOCOL_ERROR." + // // Section 5.1: "Receiving any frame other than HEADERS // or PRIORITY on a stream in this state MUST be // treated as a connection error (Section 5.4.1) of // type PROTOCOL_ERROR." return ConnectionError(ErrCodeProtocol) } + + // "If a DATA frame is received whose stream is not in "open" + // or "half closed (local)" state, the recipient MUST respond + // with a stream error (Section 5.4.2) of type STREAM_CLOSED." if st == nil || state != stateOpen || st.gotTrailerHeader || st.resetQueued { // This includes sending a RST_STREAM if the stream is // in stateHalfClosedLocal (which currently means that diff --git a/vendor/golang.org/x/net/idna/idna10.0.0.go b/vendor/golang.org/x/net/idna/idna10.0.0.go index a98a31f40..7e69ee1b2 100644 --- a/vendor/golang.org/x/net/idna/idna10.0.0.go +++ b/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -4,6 +4,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.10 // +build go1.10 // Package idna implements IDNA2008 using the compatibility processing diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go index 8842146b5..7c7456374 100644 --- a/vendor/golang.org/x/net/idna/idna9.0.0.go +++ b/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -4,6 +4,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.10 // +build !go1.10 // Package idna implements IDNA2008 using the compatibility processing diff --git a/vendor/golang.org/x/net/idna/tables10.0.0.go b/vendor/golang.org/x/net/idna/tables10.0.0.go index 54fddb4b1..d1d62ef45 100644 --- a/vendor/golang.org/x/net/idna/tables10.0.0.go +++ b/vendor/golang.org/x/net/idna/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package idna diff --git a/vendor/golang.org/x/net/idna/tables11.0.0.go b/vendor/golang.org/x/net/idna/tables11.0.0.go index 8ce0811fd..167efba71 100644 --- a/vendor/golang.org/x/net/idna/tables11.0.0.go +++ b/vendor/golang.org/x/net/idna/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package idna diff --git a/vendor/golang.org/x/net/idna/tables12.0.0.go b/vendor/golang.org/x/net/idna/tables12.0.0.go index f39f0cb4c..ab40f7bcc 100644 --- a/vendor/golang.org/x/net/idna/tables12.0.0.go +++ b/vendor/golang.org/x/net/idna/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package idna diff --git a/vendor/golang.org/x/net/idna/tables13.0.0.go b/vendor/golang.org/x/net/idna/tables13.0.0.go index e8c7a36d7..390c5e56d 100644 --- a/vendor/golang.org/x/net/idna/tables13.0.0.go +++ b/vendor/golang.org/x/net/idna/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package idna diff --git a/vendor/golang.org/x/net/idna/tables9.0.0.go b/vendor/golang.org/x/net/idna/tables9.0.0.go index 8b65fa167..4074b5332 100644 --- a/vendor/golang.org/x/net/idna/tables9.0.0.go +++ b/vendor/golang.org/x/net/idna/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package idna diff --git a/vendor/golang.org/x/oauth2/google/appengine_gen1.go b/vendor/golang.org/x/oauth2/google/appengine_gen1.go index 83dacac32..16c6c6b90 100644 --- a/vendor/golang.org/x/oauth2/google/appengine_gen1.go +++ b/vendor/golang.org/x/oauth2/google/appengine_gen1.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build appengine // +build appengine // This file applies to App Engine first generation runtimes (<= Go 1.9). diff --git a/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go b/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go index 04c2c2216..a7e27b3d2 100644 --- a/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go +++ b/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !appengine // +build !appengine // This file applies to App Engine second generation runtimes (>= Go 1.11) and App Engine flexible. diff --git a/vendor/golang.org/x/oauth2/google/default.go b/vendor/golang.org/x/oauth2/google/default.go index ad2c09236..ae391313d 100644 --- a/vendor/golang.org/x/oauth2/google/default.go +++ b/vendor/golang.org/x/oauth2/google/default.go @@ -21,6 +21,10 @@ import ( // Credentials holds Google credentials, including "Application Default Credentials". // For more details, see: // https://developers.google.com/accounts/docs/application-default-credentials +// Credentials from external accounts (workload identity federation) are used to +// identify a particular application from an on-prem or non-Google Cloud platform +// including Amazon Web Services (AWS), Microsoft Azure or any identity provider +// that supports OpenID Connect (OIDC). type Credentials struct { ProjectID string // may be empty TokenSource oauth2.TokenSource @@ -65,6 +69,10 @@ func DefaultTokenSource(ctx context.Context, scope ...string) (oauth2.TokenSourc // // 1. A JSON file whose path is specified by the // GOOGLE_APPLICATION_CREDENTIALS environment variable. +// For workload identity federation, refer to +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation on +// how to generate the JSON configuration file for on-prem/non-Google cloud +// platforms. // 2. A JSON file in a location known to the gcloud command-line tool. // On Windows, this is %APPDATA%/gcloud/application_default_credentials.json. // On other systems, $HOME/.config/gcloud/application_default_credentials.json. @@ -119,8 +127,10 @@ func FindDefaultCredentials(ctx context.Context, scopes ...string) (*Credentials // CredentialsFromJSON obtains Google credentials from a JSON value. The JSON can // represent either a Google Developers Console client_credentials.json file (as in -// ConfigFromJSON) or a Google Developers service account key file (as in -// JWTConfigFromJSON). +// ConfigFromJSON), a Google Developers service account key file (as in +// JWTConfigFromJSON) or the JSON configuration file for workload identity federation +// in non-Google cloud platforms (see +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation). func CredentialsFromJSON(ctx context.Context, jsonData []byte, scopes ...string) (*Credentials, error) { var f credentialsFile if err := json.Unmarshal(jsonData, &f); err != nil { diff --git a/vendor/golang.org/x/oauth2/google/doc.go b/vendor/golang.org/x/oauth2/google/doc.go index 73be62903..b241c728a 100644 --- a/vendor/golang.org/x/oauth2/google/doc.go +++ b/vendor/golang.org/x/oauth2/google/doc.go @@ -4,13 +4,16 @@ // Package google provides support for making OAuth2 authorized and authenticated // HTTP requests to Google APIs. It supports the Web server flow, client-side -// credentials, service accounts, Google Compute Engine service accounts, and Google -// App Engine service accounts. +// credentials, service accounts, Google Compute Engine service accounts, Google +// App Engine service accounts and workload identity federation from non-Google +// cloud platforms. // // A brief overview of the package follows. For more information, please read // https://developers.google.com/accounts/docs/OAuth2 // and // https://developers.google.com/accounts/docs/application-default-credentials. +// For more information on using workload identity federation, refer to +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation. // // OAuth2 Configs // @@ -19,6 +22,35 @@ // the other by JWTConfigFromJSON. The returned Config can be used to obtain a TokenSource or // create an http.Client. // +// Workload Identity Federation +// +// Using workload identity federation, your application can access Google Cloud +// resources from Amazon Web Services (AWS), Microsoft Azure or any identity +// provider that supports OpenID Connect (OIDC). +// Traditionally, applications running outside Google Cloud have used service +// account keys to access Google Cloud resources. Using identity federation, +// you can allow your workload to impersonate a service account. +// This lets you access Google Cloud resources directly, eliminating the +// maintenance and security burden associated with service account keys. +// +// Follow the detailed instructions on how to configure Workload Identity Federation +// in various platforms: +// +// Amazon Web Services (AWS): https://cloud.google.com/iam/docs/access-resources-aws +// Microsoft Azure: https://cloud.google.com/iam/docs/access-resources-azure +// OIDC identity provider: https://cloud.google.com/iam/docs/access-resources-oidc +// +// For OIDC providers, the library can retrieve OIDC tokens either from a +// local file location (file-sourced credentials) or from a local server +// (URL-sourced credentials). +// For file-sourced credentials, a background process needs to be continuously +// refreshing the file location with a new OIDC token prior to expiration. +// For tokens with one hour lifetimes, the token needs to be updated in the file +// every hour. The token can be stored directly as plain text or in JSON format. +// For URL-sourced credentials, a local server needs to host a GET endpoint to +// return the OIDC token. The response can be in plain text or JSON. +// Additional required request headers can also be specified. +// // // Credentials // @@ -29,6 +61,13 @@ // FindDefaultCredentials looks in some well-known places for a credentials file, and // will call AppEngineTokenSource or ComputeTokenSource as needed. // +// Application Default Credentials also support workload identity federation to +// access Google Cloud resources from non-Google Cloud platforms including Amazon +// Web Services (AWS), Microsoft Azure or any identity provider that supports +// OpenID Connect (OIDC). Workload identity federation is recommended for +// non-Google Cloud environments as it avoids the need to download, manage and +// store service account private keys locally. +// // DefaultClient and DefaultTokenSource are convenience methods. They first call FindDefaultCredentials, // then use the credentials to construct an http.Client or an oauth2.TokenSource. // diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go index 2eb5c8e24..1b87c09f8 100644 --- a/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go @@ -45,7 +45,7 @@ func (c *Config) TokenSource(ctx context.Context) oauth2.TokenSource { ctx: ctx, url: c.ServiceAccountImpersonationURL, scopes: scopes, - ts: oauth2.ReuseTokenSource(nil, ts), + ts: oauth2.ReuseTokenSource(nil, ts), } return oauth2.ReuseTokenSource(nil, imp) } @@ -124,7 +124,7 @@ func (ts tokenSource) Token() (*oauth2.Token, error) { if err != nil { return nil, err } - stsRequest := STSTokenExchangeRequest{ + stsRequest := stsTokenExchangeRequest{ GrantType: "urn:ietf:params:oauth:grant-type:token-exchange", Audience: conf.Audience, Scope: conf.Scopes, @@ -134,12 +134,12 @@ func (ts tokenSource) Token() (*oauth2.Token, error) { } header := make(http.Header) header.Add("Content-Type", "application/x-www-form-urlencoded") - clientAuth := ClientAuthentication{ + clientAuth := clientAuthentication{ AuthStyle: oauth2.AuthStyleInHeader, ClientID: conf.ClientID, ClientSecret: conf.ClientSecret, } - stsResp, err := ExchangeToken(ts.ctx, conf.TokenURL, &stsRequest, clientAuth, header, nil) + stsResp, err := exchangeToken(ts.ctx, conf.TokenURL, &stsRequest, clientAuth, header, nil) if err != nil { return nil, err } diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go index 0464724fd..feccf8b68 100644 --- a/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go @@ -11,15 +11,15 @@ import ( "net/url" ) -// ClientAuthentication represents an OAuth client ID and secret and the mechanism for passing these credentials as stated in rfc6749#2.3.1. -type ClientAuthentication struct { +// clientAuthentication represents an OAuth client ID and secret and the mechanism for passing these credentials as stated in rfc6749#2.3.1. +type clientAuthentication struct { // AuthStyle can be either basic or request-body AuthStyle oauth2.AuthStyle ClientID string ClientSecret string } -func (c *ClientAuthentication) InjectAuthentication(values url.Values, headers http.Header) { +func (c *clientAuthentication) InjectAuthentication(values url.Values, headers http.Header) { if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil { return } diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go index fbb477d10..a8a704bb4 100644 --- a/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go @@ -18,11 +18,11 @@ import ( "golang.org/x/oauth2" ) -// ExchangeToken performs an oauth2 token exchange with the provided endpoint. +// exchangeToken performs an oauth2 token exchange with the provided endpoint. // The first 4 fields are all mandatory. headers can be used to pass additional // headers beyond the bare minimum required by the token exchange. options can // be used to pass additional JSON-structured options to the remote server. -func ExchangeToken(ctx context.Context, endpoint string, request *STSTokenExchangeRequest, authentication ClientAuthentication, headers http.Header, options map[string]interface{}) (*STSTokenExchangeResponse, error) { +func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchangeRequest, authentication clientAuthentication, headers http.Header, options map[string]interface{}) (*stsTokenExchangeResponse, error) { client := oauth2.NewClient(ctx, nil) @@ -68,7 +68,7 @@ func ExchangeToken(ctx context.Context, endpoint string, request *STSTokenExchan if c := resp.StatusCode; c < 200 || c > 299 { return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body) } - var stsResp STSTokenExchangeResponse + var stsResp stsTokenExchangeResponse err = json.Unmarshal(body, &stsResp) if err != nil { return nil, fmt.Errorf("oauth2/google: failed to unmarshal response body from Secure Token Server: %v", err) @@ -78,8 +78,8 @@ func ExchangeToken(ctx context.Context, endpoint string, request *STSTokenExchan return &stsResp, nil } -// STSTokenExchangeRequest contains fields necessary to make an oauth2 token exchange. -type STSTokenExchangeRequest struct { +// stsTokenExchangeRequest contains fields necessary to make an oauth2 token exchange. +type stsTokenExchangeRequest struct { ActingParty struct { ActorToken string ActorTokenType string @@ -93,8 +93,8 @@ type STSTokenExchangeRequest struct { SubjectTokenType string } -// STSTokenExchangeResponse is used to decode the remote server response during an oauth2 token exchange. -type STSTokenExchangeResponse struct { +// stsTokenExchangeResponse is used to decode the remote server response during an oauth2 token exchange. +type stsTokenExchangeResponse struct { AccessToken string `json:"access_token"` IssuedTokenType string `json:"issued_token_type"` TokenType string `json:"token_type"` diff --git a/vendor/golang.org/x/oauth2/internal/client_appengine.go b/vendor/golang.org/x/oauth2/internal/client_appengine.go index 743487188..e1755d1d9 100644 --- a/vendor/golang.org/x/oauth2/internal/client_appengine.go +++ b/vendor/golang.org/x/oauth2/internal/client_appengine.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build appengine // +build appengine package internal diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go index 951fce4d0..abc89c104 100644 --- a/vendor/golang.org/x/sys/unix/aliases.go +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9 +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // +build go1.9 package unix diff --git a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s new file mode 100644 index 000000000..3b54e1858 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -0,0 +1,426 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc +// +build zos +// +build s390x +// +build gc + +#include "textflag.h" + +#define PSALAA 1208(R0) +#define GTAB64(x) 80(x) +#define LCA64(x) 88(x) +#define CAA(x) 8(x) +#define EDCHPXV(x) 1016(x) // in the CAA +#define SAVSTACK_ASYNC(x) 336(x) // in the LCA + +// SS_*, where x=SAVSTACK_ASYNC +#define SS_LE(x) 0(x) +#define SS_GO(x) 8(x) +#define SS_ERRNO(x) 16(x) +#define SS_ERRNOJR(x) 20(x) + +#define LE_CALL BYTE $0x0D; BYTE $0x76; // BL R7, R6 + +TEXT ·clearErrno(SB),NOSPLIT,$0-0 + BL addrerrno<>(SB) + MOVD $0, 0(R3) + RET + +// Returns the address of errno in R3. +TEXT addrerrno<>(SB),NOSPLIT|NOFRAME,$0-0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get __errno FuncDesc. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + ADD $(0x156*16), R9 + LMG 0(R9), R5, R6 + + // Switch to saved LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call __errno function. + LE_CALL + NOPH + + // Switch back to Go stack. + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + RET + +TEXT ·syscall_syscall(SB),NOSPLIT,$0-56 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+32(FP) + MOVD R0, r2+40(FP) + MOVD R0, err+48(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall(SB),NOSPLIT,$0-56 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+32(FP) + MOVD R0, r2+40(FP) + MOVD R0, err+48(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) +done: + RET + +TEXT ·syscall_syscall6(SB),NOSPLIT,$0-80 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+56(FP) + MOVD R0, r2+64(FP) + MOVD R0, err+72(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+72(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall6(SB),NOSPLIT,$0-80 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+56(FP) + MOVD R0, r2+64(FP) + MOVD R0, err+72(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL ·rrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+72(FP) +done: + RET + +TEXT ·syscall_syscall9(SB),NOSPLIT,$0 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + MOVD a7+56(FP), R12 + MOVD R12, (2176+48)(R4) + MOVD a8+64(FP), R12 + MOVD R12, (2176+56)(R4) + MOVD a9+72(FP), R12 + MOVD R12, (2176+64)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+80(FP) + MOVD R0, r2+88(FP) + MOVD R0, err+96(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+96(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall9(SB),NOSPLIT,$0 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + MOVD a7+56(FP), R12 + MOVD R12, (2176+48)(R4) + MOVD a8+64(FP), R12 + MOVD R12, (2176+56)(R4) + MOVD a9+72(FP), R12 + MOVD R12, (2176+64)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+80(FP) + MOVD R0, r2+88(FP) + MOVD R0, err+96(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+96(FP) +done: + RET + +// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +TEXT ·svcCall(SB),NOSPLIT,$0 + BL runtime·save_g(SB) // Save g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD R15, 0(R9) + + MOVD argv+8(FP), R1 // Move function arguments into registers + MOVD dsa+16(FP), g + MOVD fnptr+0(FP), R15 + + BYTE $0x0D // Branch to function + BYTE $0xEF + + BL runtime·load_g(SB) // Restore g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R15 + + RET + +// func svcLoad(name *byte) unsafe.Pointer +TEXT ·svcLoad(SB),NOSPLIT,$0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD $0x80000000, R1 + MOVD $0, R15 + BYTE $0x0A // SVC 08 LOAD + BYTE $0x08 + MOVW R15, R3 // Save return code from SVC + MOVD R2, R15 // Restore go stack pointer + CMP R3, $0 // Check SVC return code + BNE error + + MOVD $-2, R3 // Reset last bit of entry point to zero + AND R0, R3 + MOVD R3, addr+8(FP) // Return entry point returned by SVC + CMP R0, R3 // Check if last bit of entry point was set + BNE done + + MOVD R15, R2 // Save go stack pointer + MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) + BYTE $0x0A // SVC 09 DELETE + BYTE $0x09 + MOVD R2, R15 // Restore go stack pointer + +error: + MOVD $0, addr+8(FP) // Return 0 on failure +done: + XOR R0, R0 // Reset r0 to 0 + RET + +// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 +TEXT ·svcUnload(SB),NOSPLIT,$0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD addr+8(FP), R15 + BYTE $0x0A // SVC 09 + BYTE $0x09 + XOR R0, R0 // Reset r0 to 0 + MOVD R15, R1 // Save SVC return code + MOVD R2, R15 // Restore go stack pointer + MOVD R1, rc+0(FP) // Return SVC return code + RET + +// func gettid() uint64 +TEXT ·gettid(SB), NOSPLIT, $0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get CEECAATHDID + MOVD CAA(R8), R9 + MOVD 0x3D0(R9), R9 + MOVD R9, ret+0(FP) + + RET diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go index df5204877..0b7c6adb8 100644 --- a/vendor/golang.org/x/sys/unix/cap_freebsd.go +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build freebsd // +build freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go index 3a6ac648d..394a3965b 100644 --- a/vendor/golang.org/x/sys/unix/constants.go +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go index 5e5fb4510..65a998508 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc +//go:build aix && ppc +// +build aix,ppc // Functions to access/create device major and minor numbers matching the // encoding used by AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go index 8b401244c..8fc08ad0a 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc64 +//go:build aix && ppc64 +// +build aix,ppc64 // Functions to access/create device major and minor numbers matching the // encoding used AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_zos.go b/vendor/golang.org/x/sys/unix/dev_zos.go new file mode 100644 index 000000000..a388e59a0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_zos.go @@ -0,0 +1,29 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Functions to access/create device major and minor numbers matching the +// encoding used by z/OS. +// +// The information below is extracted and adapted from macros. + +package unix + +// Major returns the major component of a z/OS device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0x0000FFFF) +} + +// Minor returns the minor component of a z/OS device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0x0000FFFF) +} + +// Mkdev returns a z/OS device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 16) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 304016b68..e74e5eaa3 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go index 86781eac2..a52026557 100644 --- a/vendor/golang.org/x/sys/unix/endian_big.go +++ b/vendor/golang.org/x/sys/unix/endian_big.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 // +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index 8822d8541..4362f47e2 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh // +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh package unix diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 84178b0a1..29ccc4d13 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Unix environment variables. diff --git a/vendor/golang.org/x/sys/unix/epoll_zos.go b/vendor/golang.org/x/sys/unix/epoll_zos.go new file mode 100644 index 000000000..cedaf7e02 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/epoll_zos.go @@ -0,0 +1,221 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "sync" +) + +// This file simulates epoll on z/OS using poll. + +// Analogous to epoll_event on Linux. +// TODO(neeilan): Pad is because the Linux kernel expects a 96-bit struct. We never pass this to the kernel; remove? +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + EPOLLERR = 0x8 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDNORM = 0x40 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + // The following constants are part of the epoll API, but represent + // currently unsupported functionality on z/OS. + // EPOLL_CLOEXEC = 0x80000 + // EPOLLET = 0x80000000 + // EPOLLONESHOT = 0x40000000 + // EPOLLRDHUP = 0x2000 // Typically used with edge-triggered notis + // EPOLLEXCLUSIVE = 0x10000000 // Exclusive wake-up mode + // EPOLLWAKEUP = 0x20000000 // Relies on Linux's BLOCK_SUSPEND capability +) + +// TODO(neeilan): We can eliminate these epToPoll / pToEpoll calls by using identical mask values for POLL/EPOLL +// constants where possible The lower 16 bits of epoll events (uint32) can fit any system poll event (int16). + +// epToPollEvt converts epoll event field to poll equivalent. +// In epoll, Events is a 32-bit field, while poll uses 16 bits. +func epToPollEvt(events uint32) int16 { + var ep2p = map[uint32]int16{ + EPOLLIN: POLLIN, + EPOLLOUT: POLLOUT, + EPOLLHUP: POLLHUP, + EPOLLPRI: POLLPRI, + EPOLLERR: POLLERR, + } + + var pollEvts int16 = 0 + for epEvt, pEvt := range ep2p { + if (events & epEvt) != 0 { + pollEvts |= pEvt + } + } + + return pollEvts +} + +// pToEpollEvt converts 16 bit poll event bitfields to 32-bit epoll event fields. +func pToEpollEvt(revents int16) uint32 { + var p2ep = map[int16]uint32{ + POLLIN: EPOLLIN, + POLLOUT: EPOLLOUT, + POLLHUP: EPOLLHUP, + POLLPRI: EPOLLPRI, + POLLERR: EPOLLERR, + } + + var epollEvts uint32 = 0 + for pEvt, epEvt := range p2ep { + if (revents & pEvt) != 0 { + epollEvts |= epEvt + } + } + + return epollEvts +} + +// Per-process epoll implementation. +type epollImpl struct { + mu sync.Mutex + epfd2ep map[int]*eventPoll + nextEpfd int +} + +// eventPoll holds a set of file descriptors being watched by the process. A process can have multiple epoll instances. +// On Linux, this is an in-kernel data structure accessed through a fd. +type eventPoll struct { + mu sync.Mutex + fds map[int]*EpollEvent +} + +// epoll impl for this process. +var impl epollImpl = epollImpl{ + epfd2ep: make(map[int]*eventPoll), + nextEpfd: 0, +} + +func (e *epollImpl) epollcreate(size int) (epfd int, err error) { + e.mu.Lock() + defer e.mu.Unlock() + epfd = e.nextEpfd + e.nextEpfd++ + + e.epfd2ep[epfd] = &eventPoll{ + fds: make(map[int]*EpollEvent), + } + return epfd, nil +} + +func (e *epollImpl) epollcreate1(flag int) (fd int, err error) { + return e.epollcreate(4) +} + +func (e *epollImpl) epollctl(epfd int, op int, fd int, event *EpollEvent) (err error) { + e.mu.Lock() + defer e.mu.Unlock() + + ep, ok := e.epfd2ep[epfd] + if !ok { + + return EBADF + } + + switch op { + case EPOLL_CTL_ADD: + // TODO(neeilan): When we make epfds and fds disjoint, detect epoll + // loops here (instances watching each other) and return ELOOP. + if _, ok := ep.fds[fd]; ok { + return EEXIST + } + ep.fds[fd] = event + case EPOLL_CTL_MOD: + if _, ok := ep.fds[fd]; !ok { + return ENOENT + } + ep.fds[fd] = event + case EPOLL_CTL_DEL: + if _, ok := ep.fds[fd]; !ok { + return ENOENT + } + delete(ep.fds, fd) + + } + return nil +} + +// Must be called while holding ep.mu +func (ep *eventPoll) getFds() []int { + fds := make([]int, len(ep.fds)) + for fd := range ep.fds { + fds = append(fds, fd) + } + return fds +} + +func (e *epollImpl) epollwait(epfd int, events []EpollEvent, msec int) (n int, err error) { + e.mu.Lock() // in [rare] case of concurrent epollcreate + epollwait + ep, ok := e.epfd2ep[epfd] + + if !ok { + e.mu.Unlock() + return 0, EBADF + } + + pollfds := make([]PollFd, 4) + for fd, epollevt := range ep.fds { + pollfds = append(pollfds, PollFd{Fd: int32(fd), Events: epToPollEvt(epollevt.Events)}) + } + e.mu.Unlock() + + n, err = Poll(pollfds, msec) + if err != nil { + return n, err + } + + i := 0 + for _, pFd := range pollfds { + if pFd.Revents != 0 { + events[i] = EpollEvent{Fd: pFd.Fd, Events: pToEpollEvt(pFd.Revents)} + i++ + } + + if i == n { + break + } + } + + return n, nil +} + +func EpollCreate(size int) (fd int, err error) { + return impl.epollcreate(size) +} + +func EpollCreate1(flag int) (fd int, err error) { + return impl.epollcreate1(flag) +} + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + return impl.epollctl(epfd, op, fd, event) +} + +// Because EpollWait mutates events, the caller is expected to coordinate +// concurrent access if calling with the same epfd from multiple goroutines. +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + return impl.epollwait(epfd, events, msec) +} diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go index 4dc534864..e9b991258 100644 --- a/vendor/golang.org/x/sys/unix/fcntl.go +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build dragonfly || freebsd || linux || netbsd || openbsd // +build dragonfly freebsd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go index 8db48e5e0..cb0dfbd09 100644 --- a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +++ b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) // +build linux,386 linux,arm linux,mips linux,mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go index b27be0a01..b1e07b220 100644 --- a/vendor/golang.org/x/sys/unix/fdset.go +++ b/vendor/golang.org/x/sys/unix/fdset.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/fstatfs_zos.go b/vendor/golang.org/x/sys/unix/fstatfs_zos.go new file mode 100644 index 000000000..e377cc9f4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/fstatfs_zos.go @@ -0,0 +1,164 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "unsafe" +) + +// This file simulates fstatfs on z/OS using fstatvfs and w_getmntent. + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + var stat_v Statvfs_t + err = Fstatvfs(fd, &stat_v) + if err == nil { + // populate stat + stat.Type = 0 + stat.Bsize = stat_v.Bsize + stat.Blocks = stat_v.Blocks + stat.Bfree = stat_v.Bfree + stat.Bavail = stat_v.Bavail + stat.Files = stat_v.Files + stat.Ffree = stat_v.Ffree + stat.Fsid = stat_v.Fsid + stat.Namelen = stat_v.Namemax + stat.Frsize = stat_v.Frsize + stat.Flags = stat_v.Flag + for passn := 0; passn < 5; passn++ { + switch passn { + case 0: + err = tryGetmntent64(stat) + break + case 1: + err = tryGetmntent128(stat) + break + case 2: + err = tryGetmntent256(stat) + break + case 3: + err = tryGetmntent512(stat) + break + case 4: + err = tryGetmntent1024(stat) + break + default: + break + } + //proceed to return if: err is nil (found), err is nonnil but not ERANGE (another error occurred) + if err == nil || err != nil && err != ERANGE { + break + } + } + } + return err +} + +func tryGetmntent64(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [64]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent128(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [128]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent256(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [256]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent512(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [512]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent1024(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [1024]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index 86032c11e..0dee23222 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build gccgo -// +build !aix +//go:build gccgo && !aix +// +build gccgo,!aix package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go index 251a977a8..e60e49a3d 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gccgo && linux && amd64 // +build gccgo,linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go index 564167861..6c7ad052e 100644 --- a/vendor/golang.org/x/sys/unix/ioctl.go +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl_zos.go b/vendor/golang.org/x/sys/unix/ioctl_zos.go new file mode 100644 index 000000000..5384e7d91 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ioctl_zos.go @@ -0,0 +1,74 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCSETS, TCSETSW, or TCSETSF +func IoctlSetTermios(fd int, req uint, value *Termios) error { + if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { + return ENOSYS + } + err := Tcsetattr(fd, int(req), value) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// IoctlGetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCGETS +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + if req != TCGETS { + return &value, ENOSYS + } + err := Tcgetattr(fd, &value) + return &value, err +} diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index b8313e98a..60ffa48a2 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -65,6 +65,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -114,6 +115,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -213,6 +215,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -223,6 +226,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -299,6 +303,17 @@ struct ltchars { // Including linux/l2tp.h here causes conflicts between linux/in.h // and netinet/in.h included via net/route.h above. #define IPPROTO_L2TP 115 + +// Copied from linux/hid.h. +// Keep in sync with the size of the referenced fields. +#define _HIDIOCGRAWNAME_LEN 128 // sizeof_field(struct hid_device, name) +#define _HIDIOCGRAWPHYS_LEN 64 // sizeof_field(struct hid_device, phys) +#define _HIDIOCGRAWUNIQ_LEN 64 // sizeof_field(struct hid_device, uniq) + +#define _HIDIOCGRAWNAME HIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN) +#define _HIDIOCGRAWPHYS HIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN) +#define _HIDIOCGRAWUNIQ HIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN) + ' includes_NetBSD=' @@ -446,6 +461,8 @@ ccflags="$@" $2 !~ /^EPROC_/ && $2 !~ /^EQUIV_/ && $2 !~ /^EXPR_/ && + $2 !~ /^EVIOC/ && + $2 !~ /^EV_/ && $2 ~ /^E[A-Z0-9_]+$/ || $2 ~ /^B[0-9_]+$/ || $2 ~ /^(OLD|NEW)DEV$/ || @@ -480,7 +497,7 @@ ccflags="$@" $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || $2 ~ /^LO_(KEY|NAME)_SIZE$/ || $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL)_/ || $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || @@ -570,6 +587,9 @@ ccflags="$@" $2 ~ /^W[A-Z0-9]+$/ || $2 ~/^PPPIOC/ || $2 ~ /^FAN_|FANOTIFY_/ || + $2 == "HID_MAX_DESCRIPTOR_SIZE" || + $2 ~ /^_?HIDIOC/ || + $2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} $2 ~ /^__WCOREFLAG$/ {next} $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index bc2f3629a..53f1b4c5b 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go index fc568b540..463c3eff7 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_darwin.go +++ b/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && !ios // +build darwin,!ios package unix diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go index 183441c9a..ed0509a01 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_ios.go +++ b/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build ios // +build ios package unix diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go index 61712b51c..6f6c5fec5 100644 --- a/vendor/golang.org/x/sys/unix/race.go +++ b/vendor/golang.org/x/sys/unix/race.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin && race) || (linux && race) || (freebsd && race) // +build darwin,race linux,race freebsd,race package unix diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index ad026678c..706e1322a 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly +//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly zos package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go index 3a90aa6df..4d6257569 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdents.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdents.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd // +build aix dragonfly freebsd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go index 5fdae40b3..2a4ba47c4 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin // +build darwin package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go index 003916ed7..453a942c5 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Socket control messages diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go index 57a0021da..0840fe4a5 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin freebsd linux netbsd openbsd solaris +//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin freebsd linux netbsd openbsd solaris zos package unix @@ -36,6 +37,10 @@ func cmsgAlignOf(salen int) int { if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" { salign = 16 } + case "zos": + // z/OS socket macros use [32-bit] sizeof(int) alignment, + // not pointer width. + salign = SizeofInt } return (salen + salign - 1) & ^(salign - 1) diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go index 17fb69868..8ba89ed86 100644 --- a/vendor/golang.org/x/sys/unix/str.go +++ b/vendor/golang.org/x/sys/unix/str.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index ab75ef9cc..649fa8740 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Package unix contains an interface to the low-level operating system // primitives. OS details vary depending on the underlying system, and diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 440815382..d2723225e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix // +build aix // Aix system calls. @@ -419,8 +420,8 @@ func (w WaitStatus) TrapCause() int { return -1 } //sys Mknod(path string, mode uint32, dev int) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) -//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 -//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) //sys read(fd int, p []byte) (n int, err error) //sys Readlink(path string, buf []byte) (n int, err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) @@ -439,8 +440,8 @@ func (w WaitStatus) TrapCause() int { return -1 } //sysnb Times(tms *Tms) (ticks uintptr, err error) //sysnb Umask(mask int) (oldmask int) //sysnb Uname(buf *Utsname) (err error) -//sys Unlink(path string) (err error) -//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys write(fd int, p []byte) (n int, err error) //sys readlen(fd int, p *byte, np int) (n int, err error) = read @@ -514,7 +515,7 @@ func Munmap(b []byte) (err error) { //sys Munlock(b []byte) (err error) //sys Munlockall() (err error) -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go index b3c8e3301..e92a0be16 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc +//go:build aix && ppc +// +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go index 9a6e02417..16eed1709 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc64 +//go:build aix && ppc64 +// +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index bc634a280..95ac3946b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || netbsd || openbsd // +build darwin dragonfly freebsd netbsd openbsd // BSD system call wrappers shared by *BSD based systems @@ -318,7 +319,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { return anyToSockaddr(fd, &rsa) } -//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) // GetsockoptString returns the string value of the socket option opt for the // socket associated with fd at the given socket level. @@ -332,8 +333,8 @@ func GetsockoptString(fd, level, opt int) (string, error) { return string(buf[:vallen-1]), nil } -//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) -//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { @@ -626,7 +627,7 @@ func Futimes(fd int, tv []Timeval) error { return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } -//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) func Poll(fds []PollFd, timeout int) (n int, err error) { if len(fds) == 0 { diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go index b31ef0358..b0098607c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.12 && !go1.13 // +build darwin,go1.12,!go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go index ee852f1ab..5fc3cda6f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.13 // +build darwin,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 16f9c226b..1223d7aed 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -119,7 +119,7 @@ type attrList struct { Forkattr uint32 } -//sysnb pipe(p *[2]int32) (err error) +//sysnb pipe(p *[2]int32) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -272,7 +272,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { options) } -//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) +//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { // Darwin doesn't support SYS_UTIMENSAT @@ -320,7 +320,7 @@ func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { return err } -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} @@ -378,6 +378,15 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return } +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) /* @@ -472,8 +481,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index ee065fcf2..647467712 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 7a1f64a7b..b37310ce9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && darwin // +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 9f85fd404..d51ec9963 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && darwin // +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index f34c86c89..38bec3002 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.12 // +build darwin,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index a4f2944a2..5af108a50 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -95,7 +95,7 @@ func direntNamlen(buf []byte) (uint64, bool) { return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } -//sysnb pipe() (r int, w int, err error) +//sysnb pipe() (r int, w int, err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -105,16 +105,16 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (r int, w int, err error) -func Pipe2(p []int, flags int) error { +func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { return EINVAL } var pp [2]_C_int - err := pipe2(&pp, flags) - p[0] = int(pp[0]) - p[1] = int(pp[1]) + // pipe2 on dragonfly takes an fds array as an argument, but still + // returns the file descriptors. + p[0], p[1], err = pipe2(&pp, flags) return err } @@ -170,7 +170,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { err := sysctl(mib, old, oldlen, nil, 0) @@ -337,8 +337,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index a6b4830ac..4e2d32120 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index acc00c2e6..18c392cf3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -126,6 +126,15 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) } +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { var rsa RawSockaddrAny var len _Socklen = SizeofSockaddrAny @@ -188,9 +197,9 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { return ENOSYS } -//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} @@ -665,8 +674,8 @@ func PtraceSingleStep(pid int) (err error) { //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 72a506ddc..342fc32b1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && freebsd // +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index d5e376aca..a32d5aa4a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && freebsd // +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 4ea45bce5..1e36d39ab 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && freebsd // +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index aa5326db1..a09a1537b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && freebsd // +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go index 7a2d4120f..bc442e3ba 100644 --- a/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -4,6 +4,7 @@ // illumos system calls not present on Solaris. +//go:build amd64 && illumos // +build amd64,illumos package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 28be1306e..0a48548e8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -137,12 +137,61 @@ func IoctlFileClone(destFd, srcFd int) error { return ioctl(destFd, FICLONE, uintptr(srcFd)) } +type FileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Reserved1 uint16 + Reserved2 uint32 + Info []FileDedupeRangeInfo +} + +type FileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + // IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the -// range of data conveyed in value with the file associated with the file -// descriptor destFd. See the ioctl_fideduperange(2) man page for details. -func IoctlFileDedupeRange(destFd int, value *FileDedupeRange) error { - err := ioctl(destFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) +// range of data conveyed in value from the file associated with the file +// descriptor srcFd to the value.Info destinations. See the +// ioctl_fideduperange(2) man page for details. +func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { + buf := make([]byte, SizeofRawFileDedupeRange+ + len(value.Info)*SizeofRawFileDedupeRangeInfo) + rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0])) + rawrange.Src_offset = value.Src_offset + rawrange.Src_length = value.Src_length + rawrange.Dest_count = uint16(len(value.Info)) + rawrange.Reserved1 = value.Reserved1 + rawrange.Reserved2 = value.Reserved2 + + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + rawinfo.Dest_fd = value.Info[i].Dest_fd + rawinfo.Dest_offset = value.Info[i].Dest_offset + rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped + rawinfo.Status = value.Info[i].Status + rawinfo.Reserved = value.Info[i].Reserved + } + + err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0]))) + + // Output + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + value.Info[i].Dest_fd = rawinfo.Dest_fd + value.Info[i].Dest_offset = rawinfo.Dest_offset + value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped + value.Info[i].Status = rawinfo.Status + value.Info[i].Reserved = rawinfo.Reserved + } + return err } @@ -153,6 +202,36 @@ func IoctlWatchdogKeepalive(fd int) error { return ioctl(fd, WDIOC_KEEPALIVE, 0) } +func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { + err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { + var value HIDRawDevInfo + err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlHIDGetRawName(fd int) (string, error) { + var value [_HIDIOCGRAWNAME_LEN]byte + err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawPhys(fd int) (string, error) { + var value [_HIDIOCGRAWPHYS_LEN]byte + err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawUniq(fd int) (string, error) { + var value [_HIDIOCGRAWUNIQ_LEN]byte + err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) func Link(oldpath string, newpath string) (err error) { @@ -1482,8 +1561,8 @@ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) } -//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL -//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr @@ -1860,8 +1939,8 @@ func Getpgrp() (pid int) { //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT -//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 -//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) //sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) @@ -1934,9 +2013,9 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { //sys Syncfs(fd int) (err error) //sysnb Sysinfo(info *Sysinfo_t) (err error) //sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) -//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) -//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) -//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) +//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) +//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) +//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) //sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) //sysnb Times(tms *Tms) (ticks uintptr, err error) //sysnb Umask(mask int) (oldmask int) @@ -2196,8 +2275,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return EACCES } -//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT -//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT // fileHandle is the argument to nameToHandleAt and openByHandleAt. We // originally tried to generate it via unix/linux/types.go with "type diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index c97c2ee53..7b52e5d8a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && linux // +build 386,linux package unix @@ -31,7 +32,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -98,7 +99,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) @@ -129,7 +130,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 72efe86ed..28b764115 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && linux // +build amd64,linux package unix @@ -138,7 +139,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go index baa771f8a..8b0f0f3aa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64,linux -// +build gc +//go:build amd64 && linux && gc +// +build amd64,linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 496837b1e..68877728e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && linux // +build arm,linux package unix @@ -35,7 +36,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -129,8 +130,8 @@ func Utime(path string, buf *Utimbuf) error { //sys utimes(path string, times *[2]Timeval) (err error) -//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 -//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 @@ -177,7 +178,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) @@ -208,7 +209,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index c6de6b913..7ed703476 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && linux // +build arm64,linux package unix @@ -155,7 +156,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go index 9edf3961b..2b1168d7d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gc // +build linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go index 90e33d8cf..9843fb489 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gc && 386 // +build linux,gc,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go index 1a97baae7..a6008fccd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && gc && linux // +build arm,gc,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go index 308eb7aec..7740af242 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gccgo && 386 // +build linux,gccgo,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go index aa7fc9e19..e16a12299 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gccgo && arm // +build linux,gccgo,arm package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index f0287476c..06dec06fa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (mips64 || mips64le) // +build linux // +build mips64 mips64le @@ -104,7 +105,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index c11328111..8f0d0a5b5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (mips || mipsle) // +build linux // +build mips mipsle @@ -112,7 +113,7 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: int32(sec), Usec: int32(usec)} } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -125,7 +126,7 @@ func Pipe2(p []int, flags int) (err error) { return } -//sysnb pipe() (p1 int, p2 int, err error) +//sysnb pipe() (p1 int, p2 int, err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -153,7 +154,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT func Getrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, nil, rlim) @@ -181,7 +182,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 349374409..0b1f0d6da 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (ppc64 || ppc64le) // +build linux // +build ppc64 ppc64le @@ -99,7 +100,7 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -112,7 +113,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index b0b150556..ce9bcd317 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build riscv64 && linux // +build riscv64,linux package unix @@ -154,7 +155,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 2363f7499..a941d8881 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build s390x && linux // +build s390x,linux package unix @@ -76,7 +77,7 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: sec, Usec: usec} } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index d389f1518..49055a3cf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build sparc64 && linux // +build sparc64,linux package unix @@ -115,7 +116,7 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -128,7 +129,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 1e6843b4c..853d5f0f4 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -110,7 +110,8 @@ func direntNamlen(buf []byte) (uint64, bool) { return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } -//sysnb pipe() (fd1 int, fd2 int, err error) +//sysnb pipe() (fd1 int, fd2 int, err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL @@ -119,7 +120,21 @@ func Pipe(p []int) (err error) { return } -//sys Getdents(fd int, buf []byte) (n int, err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { @@ -159,7 +174,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { var value Ptmget diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index 24da8b524..5199d282f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index 25a0ac825..70a9c52e9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index 21591ecd4..3eb5942f9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go index 804749635..fc6ccfd81 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 6a50b50bd..22b550385 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -92,7 +92,7 @@ func Pipe2(p []int, flags int) error { return err } -//sys Getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { @@ -154,7 +154,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index 42b5a0e51..6baabcdcb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 6ea4b4883..bab25360e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 1c3d26fa2..8eed3c4d4 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go index a8c458cb0..483dde99d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 184786ed9..169497f06 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -579,7 +579,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) { return &value, err } -//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) func Poll(fds []PollFd, timeout int) (n int, err error) { if len(fds) == 0 { @@ -682,6 +682,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Statvfs(path string, vfsstat *Statvfs_t) (err error) //sys Symlink(path string, link string) (err error) //sys Sync() (err error) +//sys Sysconf(which int) (n int64, err error) //sysnb Times(tms *Tms) (ticks uintptr, err error) //sys Truncate(path string, length int64) (err error) //sys Fsync(fd int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index b22a34d7a..0bd25ef81 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && solaris // +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 400ba9fbc..a7618ceb5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go index 87bd161ce..5898e9a52 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -2,8 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris) && gc && !ppc64le && !ppc64 // +build darwin dragonfly freebsd linux netbsd openbsd solaris -// +build gc,!ppc64le,!ppc64 +// +build gc +// +build !ppc64le +// +build !ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go index d36216c3c..f6f707acf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (ppc64le || ppc64) && gc // +build linux // +build ppc64le ppc64 // +build gc diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go new file mode 100644 index 000000000..13f58d2b2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -0,0 +1,1781 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "bytes" + "runtime" + "sort" + "sync" + "syscall" + "unsafe" +) + +const ( + O_CLOEXEC = 0 // Dummy value (not supported). + AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX +) + +func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) + +func copyStat(stat *Stat_t, statLE *Stat_LE_t) { + stat.Dev = uint64(statLE.Dev) + stat.Ino = uint64(statLE.Ino) + stat.Nlink = uint64(statLE.Nlink) + stat.Mode = uint32(statLE.Mode) + stat.Uid = uint32(statLE.Uid) + stat.Gid = uint32(statLE.Gid) + stat.Rdev = uint64(statLE.Rdev) + stat.Size = statLE.Size + stat.Atim.Sec = int64(statLE.Atim) + stat.Atim.Nsec = 0 //zos doesn't return nanoseconds + stat.Mtim.Sec = int64(statLE.Mtim) + stat.Mtim.Nsec = 0 //zos doesn't return nanoseconds + stat.Ctim.Sec = int64(statLE.Ctim) + stat.Ctim.Nsec = 0 //zos doesn't return nanoseconds + stat.Blksize = int64(statLE.Blksize) + stat.Blocks = statLE.Blocks +} + +func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +func svcLoad(name *byte) unsafe.Pointer +func svcUnload(name *byte, fnptr unsafe.Pointer) int64 + +func (d *Dirent) NameString() string { + if d == nil { + return "" + } + return string(d.Name[:d.Namlen]) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { + // TODO(neeilan): Implement use of first param (fd) + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // For z/OS, only replace NUL with @ when the + // length is not zero. + if pp.Len != 0 && pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // + // For z/OS, the length of the name is a field + // in the structure. To be on the safe side, we + // will still scan the name for a NUL but only + // to the length provided in the structure. + // + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < int(pp.Len) && pp.Path[n] != 0 { + n++ + } + bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = int32(length) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys write(fd int, p []byte) (n int, err error) + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP +//sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL + +//sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A +//sys Chdir(path string) (err error) = SYS___CHDIR_A +//sys Chown(path string, uid int, gid int) (err error) = SYS___CHOWN_A +//sys Chmod(path string, mode uint32) (err error) = SYS___CHMOD_A +//sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A +//sys Dup(oldfd int) (fd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL +//sys fstat(fd int, stat *Stat_LE_t) (err error) + +func Fstat(fd int, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = fstat(fd, &statLE) + copyStat(stat, &statLE) + return +} + +//sys Fstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getpagesize() (pgsize int) = SYS_GETPAGESIZE +//sys Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT +//sys Msync(b []byte, flags int) (err error) = SYS_MSYNC +//sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL +//sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES +//sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT + +//sys Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A +//sys Unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys Chroot(path string) (err error) = SYS___CHROOT_A +//sysnb Uname(buf *Utsname) (err error) = SYS___UNAME_A + +func Ptsname(fd int) (name string, err error) { + r0, _, e1 := syscall_syscall(SYS___PTSNAME_A, uintptr(fd), 0, 0) + name = u2s(unsafe.Pointer(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func u2s(cstr unsafe.Pointer) string { + str := (*[1024]uint8)(cstr) + i := 0 + for str[i] != 0 { + i++ + } + return string(str[:i]) +} + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + for i := 0; e1 == EAGAIN && i < 10; i++ { + _, _, _ = syscall_syscall(SYS_USLEEP, uintptr(10), 0, 0) + _, _, e1 = syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + } + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +// Dummy function: there are no semantics for Madvise on z/OS +func Madvise(b []byte, advice int) (err error) { + return +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) = SYS_GETPGID + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getppid() (pid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT + +//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE + +func Getrusage(who int, rusage *Rusage) (err error) { + var ruz rusage_zos + err = getrusage(who, &ruz) + //Only the first two fields of Rusage are set + rusage.Utime.Sec = ruz.Utime.Sec + rusage.Utime.Usec = int64(ruz.Utime.Usec) + rusage.Stime.Sec = ruz.Stime.Sec + rusage.Stime.Usec = int64(ruz.Stime.Usec) + return +} + +//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID +//sysnb Getuid() (uid int) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A +//sys Link(path string, link string) (err error) = SYS___LINK_A +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A + +func Lstat(path string, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = lstat(path, &statLE) + copyStat(stat, &statLE) + return +} + +//sys Mkdir(path string, mode uint32) (err error) = SYS___MKDIR_A +//sys Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A +//sys Mknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) = SYS___READLINK_A +//sys Rename(from string, to string) (err error) = SYS___RENAME_A +//sys Rmdir(path string) (err error) = SYS___RMDIR_A +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) = SYS_SETPGID +//sysnb Setrlimit(resource int, lim *Rlimit) (err error) +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID +//sysnb Setsid() (pid int, err error) = SYS_SETSID +//sys Setuid(uid int) (err error) = SYS_SETUID +//sys Setgid(uid int) (err error) = SYS_SETGID +//sys Shutdown(fd int, how int) (err error) +//sys stat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A + +func Stat(path string, sta *Stat_t) (err error) { + var statLE Stat_LE_t + err = stat(path, &statLE) + copyStat(sta, &statLE) + return +} + +//sys Symlink(path string, link string) (err error) = SYS___SYMLINK_A +//sys Sync() = SYS_SYNC +//sys Truncate(path string, length int64) (err error) = SYS___TRUNCATE_A +//sys Tcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR +//sys Tcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR +//sys Umask(mask int) (oldmask int) +//sys Unlink(path string) (err error) = SYS___UNLINK_A +//sys Utime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A + +//sys open(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return open(path, mode, perm) +} + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + wd, err := Getwd() + if err != nil { + return err + } + + if err := Fchdir(dirfd); err != nil { + return err + } + defer Chdir(wd) + + return Mkfifo(path, mode) +} + +//sys remove(path string) (err error) + +func Remove(path string) error { + return remove(path) +} + +const ImplementsGetwd = true + +func Getcwd(buf []byte) (n int, err error) { + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + _, _, e := syscall_syscall(SYS___GETCWD_A, uintptr(p), uintptr(len(buf)), 0) + n = clen(buf) + 1 + if e != 0 { + err = errnoErr(e) + } + return +} + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func gettid() uint64 + +func Gettid() (tid int) { + return int(gettid()) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w & mask) +} + +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + // TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want. + // At the moment rusage will not be touched. + var status _C_int + wpid, err = waitpid(pid, &status, options) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sysnb gettimeofday(tv *timeval_zos) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + var tvz timeval_zos + err = gettimeofday(&tvz) + tv.Sec = tvz.Sec + tv.Usec = int64(tvz.Usec) + return +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { //fix + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS ) + return anyToSockaddr(0, &rsa) +} + +const ( + // identifier constants + nwmHeaderIdentifier = 0xd5e6d4c8 + nwmFilterIdentifier = 0xd5e6d4c6 + nwmTCPConnIdentifier = 0xd5e6d4c3 + nwmRecHeaderIdentifier = 0xd5e6d4d9 + nwmIPStatsIdentifier = 0xd5e6d4c9d7e2e340 + nwmIPGStatsIdentifier = 0xd5e6d4c9d7c7e2e3 + nwmTCPStatsIdentifier = 0xd5e6d4e3c3d7e2e3 + nwmUDPStatsIdentifier = 0xd5e6d4e4c4d7e2e3 + nwmICMPGStatsEntry = 0xd5e6d4c9c3d4d7c7 + nwmICMPTStatsEntry = 0xd5e6d4c9c3d4d7e3 + + // nwmHeader constants + nwmVersion1 = 1 + nwmVersion2 = 2 + nwmCurrentVer = 2 + + nwmTCPConnType = 1 + nwmGlobalStatsType = 14 + + // nwmFilter constants + nwmFilterLclAddrMask = 0x20000000 // Local address + nwmFilterSrcAddrMask = 0x20000000 // Source address + nwmFilterLclPortMask = 0x10000000 // Local port + nwmFilterSrcPortMask = 0x10000000 // Source port + + // nwmConnEntry constants + nwmTCPStateClosed = 1 + nwmTCPStateListen = 2 + nwmTCPStateSynSent = 3 + nwmTCPStateSynRcvd = 4 + nwmTCPStateEstab = 5 + nwmTCPStateFinWait1 = 6 + nwmTCPStateFinWait2 = 7 + nwmTCPStateClosWait = 8 + nwmTCPStateLastAck = 9 + nwmTCPStateClosing = 10 + nwmTCPStateTimeWait = 11 + nwmTCPStateDeletTCB = 12 + + // Existing constants on linux + BPF_TCP_CLOSE = 1 + BPF_TCP_LISTEN = 2 + BPF_TCP_SYN_SENT = 3 + BPF_TCP_SYN_RECV = 4 + BPF_TCP_ESTABLISHED = 5 + BPF_TCP_FIN_WAIT1 = 6 + BPF_TCP_FIN_WAIT2 = 7 + BPF_TCP_CLOSE_WAIT = 8 + BPF_TCP_LAST_ACK = 9 + BPF_TCP_CLOSING = 10 + BPF_TCP_TIME_WAIT = 11 + BPF_TCP_NEW_SYN_RECV = -1 + BPF_TCP_MAX_STATES = -2 +) + +type nwmTriplet struct { + offset uint32 + length uint32 + number uint32 +} + +type nwmQuadruplet struct { + offset uint32 + length uint32 + number uint32 + match uint32 +} + +type nwmHeader struct { + ident uint32 + length uint32 + version uint16 + nwmType uint16 + bytesNeeded uint32 + options uint32 + _ [16]byte + inputDesc nwmTriplet + outputDesc nwmQuadruplet +} + +type nwmFilter struct { + ident uint32 + flags uint32 + resourceName [8]byte + resourceId uint32 + listenerId uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + _ uint16 + _ uint16 + asid uint16 + _ [2]byte + tnLuName [8]byte + tnMonGrp uint32 + tnAppl [8]byte + applData [40]byte + nInterface [16]byte + dVipa [16]byte + dVipaPfx uint16 + dVipaPort uint16 + dVipaFamily byte + _ [3]byte + destXCF [16]byte + destXCFPfx uint16 + destXCFFamily byte + _ [1]byte + targIP [16]byte + targIPPfx uint16 + targIPFamily byte + _ [1]byte + _ [20]byte +} + +type nwmRecHeader struct { + ident uint32 + length uint32 + number byte + _ [3]byte +} + +type nwmTCPStatsEntry struct { + ident uint64 + currEstab uint32 + activeOpened uint32 + passiveOpened uint32 + connClosed uint32 + estabResets uint32 + attemptFails uint32 + passiveDrops uint32 + timeWaitReused uint32 + inSegs uint64 + predictAck uint32 + predictData uint32 + inDupAck uint32 + inBadSum uint32 + inBadLen uint32 + inShort uint32 + inDiscOldTime uint32 + inAllBeforeWin uint32 + inSomeBeforeWin uint32 + inAllAfterWin uint32 + inSomeAfterWin uint32 + inOutOfOrder uint32 + inAfterClose uint32 + inWinProbes uint32 + inWinUpdates uint32 + outWinUpdates uint32 + outSegs uint64 + outDelayAcks uint32 + outRsts uint32 + retransSegs uint32 + retransTimeouts uint32 + retransDrops uint32 + pmtuRetrans uint32 + pmtuErrors uint32 + outWinProbes uint32 + probeDrops uint32 + keepAliveProbes uint32 + keepAliveDrops uint32 + finwait2Drops uint32 + acceptCount uint64 + inBulkQSegs uint64 + inDiscards uint64 + connFloods uint32 + connStalls uint32 + cfgEphemDef uint16 + ephemInUse uint16 + ephemHiWater uint16 + flags byte + _ [1]byte + ephemExhaust uint32 + smcRCurrEstabLnks uint32 + smcRLnkActTimeOut uint32 + smcRActLnkOpened uint32 + smcRPasLnkOpened uint32 + smcRLnksClosed uint32 + smcRCurrEstab uint32 + smcRActiveOpened uint32 + smcRPassiveOpened uint32 + smcRConnClosed uint32 + smcRInSegs uint64 + smcROutSegs uint64 + smcRInRsts uint32 + smcROutRsts uint32 + smcDCurrEstabLnks uint32 + smcDActLnkOpened uint32 + smcDPasLnkOpened uint32 + smcDLnksClosed uint32 + smcDCurrEstab uint32 + smcDActiveOpened uint32 + smcDPassiveOpened uint32 + smcDConnClosed uint32 + smcDInSegs uint64 + smcDOutSegs uint64 + smcDInRsts uint32 + smcDOutRsts uint32 +} + +type nwmConnEntry struct { + ident uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + startTime [8]byte // uint64, changed to prevent padding from being inserted + lastActivity [8]byte // uint64 + bytesIn [8]byte // uint64 + bytesOut [8]byte // uint64 + inSegs [8]byte // uint64 + outSegs [8]byte // uint64 + state uint16 + activeOpen byte + flag01 byte + outBuffered uint32 + inBuffered uint32 + maxSndWnd uint32 + reXmtCount uint32 + congestionWnd uint32 + ssThresh uint32 + roundTripTime uint32 + roundTripVar uint32 + sendMSS uint32 + sndWnd uint32 + rcvBufSize uint32 + sndBufSize uint32 + outOfOrderCount uint32 + lcl0WindowCount uint32 + rmt0WindowCount uint32 + dupacks uint32 + flag02 byte + sockOpt6Cont byte + asid uint16 + resourceName [8]byte + resourceId uint32 + subtask uint32 + sockOpt byte + sockOpt6 byte + clusterConnFlag byte + proto byte + targetAppl [8]byte + luName [8]byte + clientUserId [8]byte + logMode [8]byte + timeStamp uint32 + timeStampAge uint32 + serverResourceId uint32 + intfName [16]byte + ttlsStatPol byte + ttlsStatConn byte + ttlsSSLProt uint16 + ttlsNegCiph [2]byte + ttlsSecType byte + ttlsFIPS140Mode byte + ttlsUserID [8]byte + applData [40]byte + inOldestTime [8]byte // uint64 + outOldestTime [8]byte // uint64 + tcpTrustedPartner byte + _ [3]byte + bulkDataIntfName [16]byte + ttlsNegCiph4 [4]byte + smcReason uint32 + lclSMCLinkId uint32 + rmtSMCLinkId uint32 + smcStatus byte + smcFlags byte + _ [2]byte + rcvWnd uint32 + lclSMCBufSz uint32 + rmtSMCBufSz uint32 + ttlsSessID [32]byte + ttlsSessIDLen int16 + _ [1]byte + smcDStatus byte + smcDReason uint32 +} + +var svcNameTable [][]byte = [][]byte{ + []byte("\xc5\xe9\xc2\xd5\xd4\xc9\xc6\xf4"), // svc_EZBNMIF4 +} + +const ( + svc_EZBNMIF4 = 0 +) + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + jobname := []byte("\x5c\x40\x40\x40\x40\x40\x40\x40") // "*" + responseBuffer := [4096]byte{0} + var bufferAlet, reasonCode uint32 = 0, 0 + var bufferLen, returnValue, returnCode int32 = 4096, 0, 0 + + dsa := [18]uint64{0} + var argv [7]unsafe.Pointer + argv[0] = unsafe.Pointer(&jobname[0]) + argv[1] = unsafe.Pointer(&responseBuffer[0]) + argv[2] = unsafe.Pointer(&bufferAlet) + argv[3] = unsafe.Pointer(&bufferLen) + argv[4] = unsafe.Pointer(&returnValue) + argv[5] = unsafe.Pointer(&returnCode) + argv[6] = unsafe.Pointer(&reasonCode) + + request := (*struct { + header nwmHeader + filter nwmFilter + })(unsafe.Pointer(&responseBuffer[0])) + + EZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0]) + if EZBNMIF4 == nil { + return nil, errnoErr(EINVAL) + } + + // GetGlobalStats EZBNMIF4 call + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmGlobalStatsType + request.header.options = 0x80000000 + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmRecHeader + recHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if recHeader.ident != nwmRecHeaderIdentifier { + return nil, errnoErr(EINVAL) + } + + // Parse nwmTriplets to get offsets of returned entries + var sections []*uint64 + var sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0])) + for i := uint32(0); i < uint32(recHeader.number); i++ { + offset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc)) + sectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset])) + for j := uint32(0); j < sectionDesc.number; j++ { + offset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length + sections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset]))) + } + } + + // Find nwmTCPStatsEntry in returned entries + var tcpStats *nwmTCPStatsEntry = nil + for _, ptr := range sections { + switch *ptr { + case nwmTCPStatsIdentifier: + if tcpStats != nil { + return nil, errnoErr(EINVAL) + } + tcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr)) + case nwmIPStatsIdentifier: + case nwmIPGStatsIdentifier: + case nwmUDPStatsIdentifier: + case nwmICMPGStatsEntry: + case nwmICMPTStatsEntry: + default: + return nil, errnoErr(EINVAL) + } + } + if tcpStats == nil { + return nil, errnoErr(EINVAL) + } + + // GetConnectionDetail EZBNMIF4 call + responseBuffer = [4096]byte{0} + dsa = [18]uint64{0} + bufferAlet, reasonCode = 0, 0 + bufferLen, returnValue, returnCode = 4096, 0, 0 + nameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process + nameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12))) + argv[0] = unsafe.Pointer(uintptr(*nameptr)) + + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmTCPConnType + request.header.options = 0x80000000 + + request.filter.ident = nwmFilterIdentifier + + var localSockaddr RawSockaddrAny + socklen := _Socklen(SizeofSockaddrAny) + err := getsockname(fd, &localSockaddr, &socklen) + if err != nil { + return nil, errnoErr(EINVAL) + } + if localSockaddr.Addr.Family == AF_INET { + localSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET + var i int + for i = 0; i < 4; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 4 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 4; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } else if localSockaddr.Addr.Family == AF_INET6 { + localSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET6 + var i int + for i = 0; i < 16; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 16 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 16; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmConnEntry + conn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if conn.ident != nwmTCPConnIdentifier { + return nil, errnoErr(EINVAL) + } + + // Copy data from the returned data structures into tcpInfo + // Stats from nwmConnEntry are specific to that connection. + // Stats from nwmTCPStatsEntry are global (to the interface?) + // Fields may not be an exact match. Some fields have no equivalent. + var tcpinfo TCPInfo + tcpinfo.State = uint8(conn.state) + tcpinfo.Ca_state = 0 // dummy + tcpinfo.Retransmits = uint8(tcpStats.retransSegs) + tcpinfo.Probes = uint8(tcpStats.outWinProbes) + tcpinfo.Backoff = 0 // dummy + tcpinfo.Options = 0 // dummy + tcpinfo.Rto = tcpStats.retransTimeouts + tcpinfo.Ato = tcpStats.outDelayAcks + tcpinfo.Snd_mss = conn.sendMSS + tcpinfo.Rcv_mss = conn.sendMSS // dummy + tcpinfo.Unacked = 0 // dummy + tcpinfo.Sacked = 0 // dummy + tcpinfo.Lost = 0 // dummy + tcpinfo.Retrans = conn.reXmtCount + tcpinfo.Fackets = 0 // dummy + tcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0]))) + tcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0]))) + tcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate + tcpinfo.Rcv_ssthresh = conn.ssThresh + tcpinfo.Rtt = conn.roundTripTime + tcpinfo.Rttvar = conn.roundTripVar + tcpinfo.Snd_ssthresh = conn.ssThresh // dummy + tcpinfo.Snd_cwnd = conn.congestionWnd + tcpinfo.Advmss = conn.sendMSS // dummy + tcpinfo.Reordering = 0 // dummy + tcpinfo.Rcv_rtt = conn.roundTripTime // dummy + tcpinfo.Rcv_space = conn.sendMSS // dummy + tcpinfo.Total_retrans = conn.reXmtCount + + svcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4) + + return &tcpinfo, nil +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + + return string(buf[:vallen-1]), nil +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = SizeofSockaddrAny + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + // TODO(neeilan): Remove 0 arg added to get this compiling on z/OS + from, err = anyToSockaddr(0, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = int32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +func Opendir(name string) (uintptr, error) { + p, err := BytePtrFromString(name) + if err != nil { + return 0, err + } + dir, _, e := syscall_syscall(SYS___OPENDIR_A, uintptr(unsafe.Pointer(p)), 0, 0) + runtime.KeepAlive(unsafe.Pointer(p)) + if e != 0 { + err = errnoErr(e) + } + return dir, err +} + +// clearsyscall.Errno resets the errno value to 0. +func clearErrno() + +func Readdir(dir uintptr) (*Dirent, error) { + var ent Dirent + var res uintptr + // __readdir_r_a returns errno at the end of the directory stream, rather than 0. + // Therefore to avoid false positives we clear errno before calling it. + + // TODO(neeilan): Commented this out to get sys/unix compiling on z/OS. Uncomment and fix. Error: "undefined: clearsyscall" + //clearsyscall.Errno() // TODO(mundaym): check pre-emption rules. + + e, _, _ := syscall_syscall(SYS___READDIR_R_A, dir, uintptr(unsafe.Pointer(&ent)), uintptr(unsafe.Pointer(&res))) + var err error + if e != 0 { + err = errnoErr(Errno(e)) + } + if res == 0 { + return nil, err + } + return &ent, err +} + +func Closedir(dir uintptr) error { + _, _, e := syscall_syscall(SYS_CLOSEDIR, dir, 0, 0) + if e != 0 { + return errnoErr(e) + } + return nil +} + +func Seekdir(dir uintptr, pos int) { + _, _, _ = syscall_syscall(SYS_SEEKDIR, dir, uintptr(pos), 0) +} + +func Telldir(dir uintptr) (int, error) { + p, _, e := syscall_syscall(SYS_TELLDIR, dir, 0, 0) + pos := int(p) + if pos == -1 { + return pos, errnoErr(e) + } + return pos, nil +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + // struct flock is packed on z/OS. We can't emulate that in Go so + // instead we pack it here. + var flock [24]byte + *(*int16)(unsafe.Pointer(&flock[0])) = lk.Type + *(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence + *(*int64)(unsafe.Pointer(&flock[4])) = lk.Start + *(*int64)(unsafe.Pointer(&flock[12])) = lk.Len + *(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid + _, _, errno := syscall_syscall(SYS_FCNTL, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + lk.Type = *(*int16)(unsafe.Pointer(&flock[0])) + lk.Whence = *(*int16)(unsafe.Pointer(&flock[2])) + lk.Start = *(*int64)(unsafe.Pointer(&flock[4])) + lk.Len = *(*int64)(unsafe.Pointer(&flock[12])) + lk.Pid = *(*int32)(unsafe.Pointer(&flock[20])) + if errno == 0 { + return nil + } + return errno +} + +func Flock(fd int, how int) error { + + var flock_type int16 + var fcntl_cmd int + + switch how { + case LOCK_SH | LOCK_NB: + flock_type = F_RDLCK + fcntl_cmd = F_SETLK + case LOCK_EX | LOCK_NB: + flock_type = F_WRLCK + fcntl_cmd = F_SETLK + case LOCK_EX: + flock_type = F_WRLCK + fcntl_cmd = F_SETLKW + case LOCK_UN: + flock_type = F_UNLCK + fcntl_cmd = F_SETLKW + default: + } + + flock := Flock_t{ + Type: int16(flock_type), + Whence: int16(0), + Start: int64(0), + Len: int64(0), + Pid: int32(Getppid()), + } + + err := FcntlFlock(uintptr(fd), fcntl_cmd, &flock) + return err +} + +func Mlock(b []byte) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Mlock2(b []byte, flags int) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Munlock(b []byte) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func ClockGettime(clockid int32, ts *Timespec) error { + + var ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise + var nsec_per_sec int64 = 1000000000 + + if ts == nil { + return EFAULT + } + if clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC { + var nanotime int64 = runtime.Nanotime1() + ts.Sec = nanotime / nsec_per_sec + ts.Nsec = nanotime % nsec_per_sec + } else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID { + var tm Tms + _, err := Times(&tm) + if err != nil { + return EFAULT + } + ts.Sec = int64(tm.Utime / ticks_per_sec) + ts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec) + } else { + return EINVAL + } + return nil +} + +func Statfs(path string, stat *Statfs_t) (err error) { + fd, err := open(path, O_RDONLY, 0) + defer Close(fd) + if err != nil { + return err + } + return Fstatfs(fd, stat) +} + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 103604299..3d8930405 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go index 30c1d71f4..25df1e378 100644 --- a/vendor/golang.org/x/sys/unix/xattr_bsd.go +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build freebsd || netbsd // +build freebsd netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go index 104994bc6..ca9799b79 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -1,6 +1,7 @@ // mkerrors.sh -maix32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc && aix // +build ppc,aix // Created by cgo -godefs - DO NOT EDIT diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go index 4fc8d3064..200c8c26f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -maix64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && aix // +build ppc64,aix // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index ec376f51b..7ee196f7f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 10d966a33..0100cb12f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -902,6 +903,12 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1309,6 +1316,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index 03feefbf8..e748cb110 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index 462e8cf79..df26a1968 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -902,6 +903,12 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1309,6 +1316,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index f5e91b7ab..17bba0e44 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 3689c8084..9c7c5e165 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1375,6 +1381,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index b8f7c3c93..b265abb25 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1376,6 +1382,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index be14bb1a4..0326a6b3a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -980,6 +981,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1341,6 +1347,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index 7ce9c0081..218d39906 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1376,6 +1382,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index b3463a8b5..504dd6cd2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix @@ -244,6 +245,10 @@ const ( BS0 = 0x0 BTRFS_SUPER_MAGIC = 0x9123683e BTRFS_TEST_MAGIC = 0x73727279 + BUS_BLUETOOTH = 0x5 + BUS_HIL = 0x4 + BUS_USB = 0x3 + BUS_VIRTUAL = 0x6 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -313,6 +318,7 @@ const ( CAN_J1939 = 0x7 CAN_MAX_DLC = 0x8 CAN_MAX_DLEN = 0x8 + CAN_MAX_RAW_DLC = 0xf CAN_MCNET = 0x5 CAN_MTU = 0x10 CAN_NPROTO = 0x8 @@ -664,6 +670,7 @@ const ( ETH_P_CAIF = 0xf7 ETH_P_CAN = 0xc ETH_P_CANFD = 0xd + ETH_P_CFM = 0x8902 ETH_P_CONTROL = 0x16 ETH_P_CUST = 0x6006 ETH_P_DDCMP = 0x6 @@ -834,7 +841,6 @@ const ( FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0 FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1 FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3 - FSCRYPT_POLICY_FLAGS_VALID = 0x1f FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4 FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 = 0x10 FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8 @@ -865,7 +871,7 @@ const ( FS_POLICY_FLAGS_PAD_4 = 0x0 FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 - FS_POLICY_FLAGS_VALID = 0x1f + FS_POLICY_FLAGS_VALID = 0x7 FS_VERITY_FL = 0x100000 FS_VERITY_HASH_ALG_SHA256 = 0x1 FS_VERITY_HASH_ALG_SHA512 = 0x2 @@ -962,6 +968,7 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HID_MAX_DESCRIPTOR_SIZE = 0x1000 HOSTFS_SUPER_MAGIC = 0xc0ffee HPFS_SUPER_MAGIC = 0xf995e849 HUGETLBFS_MAGIC = 0x958458f6 @@ -1138,6 +1145,7 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVERR_RFC4884 = 0x1f IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 @@ -1202,6 +1210,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVERR_RFC4884 = 0x1a IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 @@ -1840,6 +1849,7 @@ const ( PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_SYSCALL_USER_DISPATCH = 0x3b PR_SET_TAGGED_ADDR_CTRL = 0x37 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d @@ -1859,6 +1869,8 @@ const ( PR_SVE_SET_VL_ONEXEC = 0x40000 PR_SVE_VL_INHERIT = 0x20000 PR_SVE_VL_LEN_MASK = 0xffff + PR_SYS_DISPATCH_OFF = 0x0 + PR_SYS_DISPATCH_ON = 0x1 PR_TAGGED_ADDR_ENABLE = 0x1 PR_TASK_PERF_EVENTS_DISABLE = 0x1f PR_TASK_PERF_EVENTS_ENABLE = 0x20 @@ -2104,12 +2116,13 @@ const ( RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 RTNH_ALIGNTO = 0x4 - RTNH_COMPARE_MASK = 0x19 + RTNH_COMPARE_MASK = 0x59 RTNH_F_DEAD = 0x1 RTNH_F_LINKDOWN = 0x10 RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_TRAP = 0x40 RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a @@ -2580,6 +2593,7 @@ const ( VMADDR_CID_HOST = 0x2 VMADDR_CID_HYPERVISOR = 0x0 VMADDR_CID_LOCAL = 0x1 + VMADDR_FLAG_TO_HOST = 0x1 VMADDR_PORT_ANY = 0xffffffff VM_SOCKETS_INVALID_VERSION = 0xffffffff VQUIT = 0x1 @@ -2727,6 +2741,9 @@ const ( Z3FOLD_MAGIC = 0x33 ZONEFS_MAGIC = 0x5a4f4653 ZSMALLOC_MAGIC = 0x58295829 + _HIDIOCGRAWNAME_LEN = 0x80 + _HIDIOCGRAWPHYS_LEN = 0x40 + _HIDIOCGRAWUNIQ_LEN = 0x40 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 336e0b326..e91a1a957 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -93,6 +94,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x40087447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -481,6 +489,9 @@ const ( X86_FXSR_MAGIC = 0x0 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 961507e93..a9cbac644 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -93,6 +94,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_ARCH_PRCTL = 0x1e @@ -269,6 +275,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -291,6 +298,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -481,6 +489,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a65576db7..d74f3c15a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40087447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETCRUNCHREGS = 0x19 @@ -275,6 +281,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -297,6 +304,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -487,6 +495,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index cf075caa8..e1538995b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -95,6 +96,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -166,6 +170,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -193,8 +198,10 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PROT_BTI = 0x10 + PROT_MTE = 0x20 PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_PEEKMTETAGS = 0x21 PTRACE_POKEMTETAGS = 0x22 @@ -264,6 +271,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -286,6 +294,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -477,6 +486,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index efe90deea..5e8e71ff8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80087447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 8b0e8911d..e670ee148 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index e9430cd1a..dd11eacb8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 61e4f5db6..a0a5b22ae 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80087447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 973ad9346..e60102f6a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff @@ -327,6 +333,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -349,6 +356,7 @@ const ( SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -543,6 +551,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4000 XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 70a7406ba..838ff4ea6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff @@ -327,6 +333,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -349,6 +356,7 @@ const ( SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -543,6 +551,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4000 XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index b1bf7997c..7cc98f09c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff RLIMIT_AS = 0x9 @@ -256,6 +262,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -278,6 +285,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -468,6 +476,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 7053d10ba..a508392d2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_DISABLE_TE = 0x5010 @@ -329,6 +335,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -351,6 +358,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -541,6 +549,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 137cfe796..d5e2dc94f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -96,6 +97,9 @@ const ( F_SETOWN = 0x6 F_UNLCK = 0x3 F_WRLCK = 0x2 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -168,6 +172,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -195,6 +200,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPAREGS = 0x14 @@ -322,6 +328,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0x400 SO_BUSY_POLL = 0x30 + SO_BUSY_POLL_BUDGET = 0x49 SO_CNX_ADVICE = 0x37 SO_COOKIE = 0x3b SO_DETACH_REUSEPORT_BPF = 0x47 @@ -344,6 +351,7 @@ const ( SO_PEERCRED = 0x40 SO_PEERGROUPS = 0x3d SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x48 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x100b @@ -531,6 +539,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 __TIOCFLUSH = 0x80047410 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 20f3a5799..72f7420d2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 90b8fcd29..8d4eb0c08 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index c5c03993b..9eef9749f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh -marm // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go index 14dd3c1d1..3b62ba192 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index c865a10df..593cc0fef 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index 9db6b2fb6..25cb60948 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 7072526a6..a4e4c2231 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go index ac5efbe5a..90de7dfc3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go index a74639a46..f1154ff56 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 5312c36cc..65fb2c5cd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && solaris // +build amd64,solaris // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go new file mode 100644 index 000000000..4117ce08a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -0,0 +1,831 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Hand edited based on zerrors_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + BRKINT = 0x0001 + CLOCK_MONOTONIC = 0x1 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x3 + CS8 = 0x0030 + CSIZE = 0x0030 + ECHO = 0x00000008 + ECHONL = 0x00000001 + FD_CLOEXEC = 0x01 + FD_CLOFORK = 0x02 + FNDELAY = 0x04 + F_CLOSFD = 9 + F_CONTROL_CVT = 13 + F_DUPFD = 0 + F_DUPFD2 = 8 + F_GETFD = 1 + F_GETFL = 259 + F_GETLK = 5 + F_GETOWN = 10 + F_OK = 0x0 + F_RDLCK = 1 + F_SETFD = 2 + F_SETFL = 4 + F_SETLK = 6 + F_SETLKW = 7 + F_SETOWN = 11 + F_SETTAG = 12 + F_UNLCK = 3 + F_WRLCK = 2 + FSTYPE_ZFS = 0xe9 //"Z" + FSTYPE_HFS = 0xc8 //"H" + FSTYPE_NFS = 0xd5 //"N" + FSTYPE_TFS = 0xe3 //"T" + FSTYPE_AUTOMOUNT = 0xc1 //"A" + IP6F_MORE_FRAG = 0x0001 + IP6F_OFF_MASK = 0xfff8 + IP6F_RESERVED_MASK = 0x0006 + IP6OPT_JUMBO = 0xc2 + IP6OPT_JUMBO_LEN = 6 + IP6OPT_MUTABLE = 0x20 + IP6OPT_NSAP_ADDR = 0xc3 + IP6OPT_PAD1 = 0x00 + IP6OPT_PADN = 0x01 + IP6OPT_ROUTER_ALERT = 0x05 + IP6OPT_TUNNEL_LIMIT = 0x04 + IP6OPT_TYPE_DISCARD = 0x40 + IP6OPT_TYPE_FORCEICMP = 0x80 + IP6OPT_TYPE_ICMP = 0xc0 + IP6OPT_TYPE_SKIP = 0x00 + IP6_ALERT_AN = 0x0002 + IP6_ALERT_MLD = 0x0000 + IP6_ALERT_RSVP = 0x0001 + IPPORT_RESERVED = 1024 + IPPORT_USERRESERVED = 5000 + IPPROTO_AH = 51 + IPPROTO_DSTOPTS = 60 + IPPROTO_EGP = 8 + IPPROTO_ESP = 50 + IPPROTO_FRAGMENT = 44 + IPPROTO_GGP = 2 + IPPROTO_HOPOPTS = 0 + IPPROTO_ICMP = 1 + IPPROTO_ICMPV6 = 58 + IPPROTO_IDP = 22 + IPPROTO_IP = 0 + IPPROTO_IPV6 = 41 + IPPROTO_MAX = 256 + IPPROTO_NONE = 59 + IPPROTO_PUP = 12 + IPPROTO_RAW = 255 + IPPROTO_ROUTING = 43 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + IPV6_ADDR_PREFERENCES = 32 + IPV6_CHECKSUM = 19 + IPV6_DONTFRAG = 29 + IPV6_DSTOPTS = 23 + IPV6_HOPLIMIT = 11 + IPV6_HOPOPTS = 22 + IPV6_JOIN_GROUP = 5 + IPV6_LEAVE_GROUP = 6 + IPV6_MULTICAST_HOPS = 9 + IPV6_MULTICAST_IF = 7 + IPV6_MULTICAST_LOOP = 4 + IPV6_NEXTHOP = 20 + IPV6_PATHMTU = 12 + IPV6_PKTINFO = 13 + IPV6_PREFER_SRC_CGA = 0x10 + IPV6_PREFER_SRC_COA = 0x02 + IPV6_PREFER_SRC_HOME = 0x01 + IPV6_PREFER_SRC_NONCGA = 0x20 + IPV6_PREFER_SRC_PUBLIC = 0x08 + IPV6_PREFER_SRC_TMP = 0x04 + IPV6_RECVDSTOPTS = 28 + IPV6_RECVHOPLIMIT = 14 + IPV6_RECVHOPOPTS = 26 + IPV6_RECVPATHMTU = 16 + IPV6_RECVPKTINFO = 15 + IPV6_RECVRTHDR = 25 + IPV6_RECVTCLASS = 31 + IPV6_RTHDR = 21 + IPV6_RTHDRDSTOPTS = 24 + IPV6_RTHDR_TYPE_0 = 0 + IPV6_TCLASS = 30 + IPV6_UNICAST_HOPS = 3 + IPV6_USE_MIN_MTU = 18 + IPV6_V6ONLY = 10 + IP_ADD_MEMBERSHIP = 5 + IP_ADD_SOURCE_MEMBERSHIP = 12 + IP_BLOCK_SOURCE = 10 + IP_DEFAULT_MULTICAST_LOOP = 1 + IP_DEFAULT_MULTICAST_TTL = 1 + IP_DROP_MEMBERSHIP = 6 + IP_DROP_SOURCE_MEMBERSHIP = 13 + IP_MAX_MEMBERSHIPS = 20 + IP_MULTICAST_IF = 7 + IP_MULTICAST_LOOP = 4 + IP_MULTICAST_TTL = 3 + IP_OPTIONS = 1 + IP_PKTINFO = 101 + IP_RECVPKTINFO = 102 + IP_TOS = 2 + IP_TTL = 3 + IP_UNBLOCK_SOURCE = 11 + ICANON = 0x0010 + ICRNL = 0x0002 + IEXTEN = 0x0020 + IGNBRK = 0x0004 + IGNCR = 0x0008 + INLCR = 0x0020 + ISIG = 0x0040 + ISTRIP = 0x0080 + IXON = 0x0200 + IXOFF = 0x0100 + LOCK_SH = 0x1 // Not exist on zOS + LOCK_EX = 0x2 // Not exist on zOS + LOCK_NB = 0x4 // Not exist on zOS + LOCK_UN = 0x8 // Not exist on zOS + POLLIN = 0x0003 + POLLOUT = 0x0004 + POLLPRI = 0x0010 + POLLERR = 0x0020 + POLLHUP = 0x0040 + POLLNVAL = 0x0080 + PROT_READ = 0x1 // mmap - page can be read + PROT_WRITE = 0x2 // page can be written + PROT_NONE = 0x4 // can't be accessed + PROT_EXEC = 0x8 // can be executed + MAP_PRIVATE = 0x1 // changes are private + MAP_SHARED = 0x2 // changes are shared + MAP_FIXED = 0x4 // place exactly + MS_SYNC = 0x1 // msync - synchronous writes + MS_ASYNC = 0x2 // asynchronous writes + MS_INVALIDATE = 0x4 // invalidate mappings + MTM_RDONLY = 0x80000000 + MTM_RDWR = 0x40000000 + MTM_UMOUNT = 0x10000000 + MTM_IMMED = 0x08000000 + MTM_FORCE = 0x04000000 + MTM_DRAIN = 0x02000000 + MTM_RESET = 0x01000000 + MTM_SAMEMODE = 0x00100000 + MTM_UNQSEFORCE = 0x00040000 + MTM_NOSUID = 0x00000400 + MTM_SYNCHONLY = 0x00000200 + MTM_REMOUNT = 0x00000100 + MTM_NOSECURITY = 0x00000080 + O_ACCMODE = 0x03 + O_APPEND = 0x08 + O_ASYNCSIG = 0x0200 + O_CREAT = 0x80 + O_EXCL = 0x40 + O_GETFL = 0x0F + O_LARGEFILE = 0x0400 + O_NONBLOCK = 0x04 + O_RDONLY = 0x02 + O_RDWR = 0x03 + O_SYNC = 0x0100 + O_TRUNC = 0x10 + O_WRONLY = 0x01 + O_NOCTTY = 0x20 + OPOST = 0x0001 + ONLCR = 0x0004 + PARENB = 0x0200 + PARMRK = 0x0400 + QUERYCVT = 3 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 // RUSAGE_THREAD unsupported on z/OS + SEEK_CUR = 1 + SEEK_END = 2 + SEEK_SET = 0 + SETAUTOCVTALL = 5 + SETAUTOCVTON = 2 + SETCVTALL = 4 + SETCVTOFF = 0 + SETCVTON = 1 + AF_APPLETALK = 16 + AF_CCITT = 10 + AF_CHAOS = 5 + AF_DATAKIT = 9 + AF_DLI = 13 + AF_ECMA = 8 + AF_HYLINK = 15 + AF_IMPLINK = 3 + AF_INET = 2 + AF_INET6 = 19 + AF_INTF = 20 + AF_IUCV = 17 + AF_LAT = 14 + AF_LINK = 18 + AF_MAX = 30 + AF_NBS = 7 + AF_NDD = 23 + AF_NETWARE = 22 + AF_NS = 6 + AF_PUP = 4 + AF_RIF = 21 + AF_ROUTE = 20 + AF_SNA = 11 + AF_UNIX = 1 + AF_UNSPEC = 0 + IBMTCP_IMAGE = 1 + MSG_ACK_EXPECTED = 0x10 + MSG_ACK_GEN = 0x40 + MSG_ACK_TIMEOUT = 0x20 + MSG_CONNTERM = 0x80 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOF = 0x8000 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 16 + MSG_NONBLOCK = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + PRIO_PROCESS = 1 + PRIO_PGRP = 2 + PRIO_USER = 3 + RLIMIT_CPU = 0 + RLIMIT_FSIZE = 1 + RLIMIT_DATA = 2 + RLIMIT_STACK = 3 + RLIMIT_CORE = 4 + RLIMIT_AS = 5 + RLIMIT_NOFILE = 6 + RLIMIT_MEMLIMIT = 7 + RLIM_INFINITY = 2147483647 + SCM_RIGHTS = 0x01 + SF_CLOSE = 0x00000002 + SF_REUSE = 0x00000001 + SHUT_RD = 0 + SHUT_RDWR = 2 + SHUT_WR = 1 + SOCK_CONN_DGRAM = 6 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + SOCK_STREAM = 1 + SOL_SOCKET = 0xffff + SOMAXCONN = 10 + SO_ACCEPTCONN = 0x0002 + SO_ACCEPTECONNABORTED = 0x0006 + SO_ACKNOW = 0x7700 + SO_BROADCAST = 0x0020 + SO_BULKMODE = 0x8000 + SO_CKSUMRECV = 0x0800 + SO_CLOSE = 0x01 + SO_CLUSTERCONNTYPE = 0x00004001 + SO_CLUSTERCONNTYPE_INTERNAL = 8 + SO_CLUSTERCONNTYPE_NOCONN = 0 + SO_CLUSTERCONNTYPE_NONE = 1 + SO_CLUSTERCONNTYPE_SAME_CLUSTER = 2 + SO_CLUSTERCONNTYPE_SAME_IMAGE = 4 + SO_DEBUG = 0x0001 + SO_DONTROUTE = 0x0010 + SO_ERROR = 0x1007 + SO_IGNOREINCOMINGPUSH = 0x1 + SO_IGNORESOURCEVIPA = 0x0002 + SO_KEEPALIVE = 0x0008 + SO_LINGER = 0x0080 + SO_NONBLOCKLOCAL = 0x8001 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x0100 + SO_OPTACK = 0x8004 + SO_OPTMSS = 0x8003 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x0004 + SO_REUSEPORT = 0x0200 + SO_SECINFO = 0x00004002 + SO_SET = 0x0200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TYPE = 0x1008 + SO_UNSET = 0x0400 + SO_USELOOPBACK = 0x0040 + SO_USE_IFBUFS = 0x0400 + S_ISUID = 0x0800 + S_ISGID = 0x0400 + S_ISVTX = 0x0200 + S_IRUSR = 0x0100 + S_IWUSR = 0x0080 + S_IXUSR = 0x0040 + S_IRWXU = 0x01C0 + S_IRGRP = 0x0020 + S_IWGRP = 0x0010 + S_IXGRP = 0x0008 + S_IRWXG = 0x0038 + S_IROTH = 0x0004 + S_IWOTH = 0x0002 + S_IXOTH = 0x0001 + S_IRWXO = 0x0007 + S_IREAD = S_IRUSR + S_IWRITE = S_IWUSR + S_IEXEC = S_IXUSR + S_IFDIR = 0x01000000 + S_IFCHR = 0x02000000 + S_IFREG = 0x03000000 + S_IFFIFO = 0x04000000 + S_IFIFO = 0x04000000 + S_IFLNK = 0x05000000 + S_IFBLK = 0x06000000 + S_IFSOCK = 0x07000000 + S_IFVMEXTL = 0xFE000000 + S_IFVMEXTL_EXEC = 0x00010000 + S_IFVMEXTL_DATA = 0x00020000 + S_IFVMEXTL_MEL = 0x00030000 + S_IFEXTL = 0x00000001 + S_IFPROGCTL = 0x00000002 + S_IFAPFCTL = 0x00000004 + S_IFNOSHARE = 0x00000008 + S_IFSHARELIB = 0x00000010 + S_IFMT = 0xFF000000 + S_IFMST = 0x00FF0000 + TCP_KEEPALIVE = 0x8 + TCP_NODELAY = 0x1 + TIOCGWINSZ = 0x4008a368 + TIOCSWINSZ = 0x8008a367 + TIOCSBRK = 0x2000a77b + TIOCCBRK = 0x2000a77a + TIOCSTI = 0x8001a772 + TIOCGPGRP = 0x4004a777 // _IOR(167, 119, int) + TCSANOW = 0 + TCSETS = 0 // equivalent to TCSANOW for tcsetattr + TCSADRAIN = 1 + TCSETSW = 1 // equivalent to TCSADRAIN for tcsetattr + TCSAFLUSH = 2 + TCSETSF = 2 // equivalent to TCSAFLUSH for tcsetattr + TCGETS = 3 // not defined in ioctl.h -- zos golang only + TCIFLUSH = 0 + TCOFLUSH = 1 + TCIOFLUSH = 2 + TCOOFF = 0 + TCOON = 1 + TCIOFF = 2 + TCION = 3 + TIOCSPGRP = 0x8004a776 + TIOCNOTTY = 0x2000a771 + TIOCEXCL = 0x2000a70d + TIOCNXCL = 0x2000a70e + TIOCGETD = 0x4004a700 + TIOCSETD = 0x8004a701 + TIOCPKT = 0x8004a770 + TIOCSTOP = 0x2000a76f + TIOCSTART = 0x2000a76e + TIOCUCNTL = 0x8004a766 + TIOCREMOTE = 0x8004a769 + TIOCMGET = 0x4004a76a + TIOCMSET = 0x8004a76d + TIOCMBIC = 0x8004a76b + TIOCMBIS = 0x8004a76c + VINTR = 0 + VQUIT = 1 + VERASE = 2 + VKILL = 3 + VEOF = 4 + VEOL = 5 + VMIN = 6 + VSTART = 7 + VSTOP = 8 + VSUSP = 9 + VTIME = 10 + WCONTINUED = 0x4 + WNOHANG = 0x1 + WUNTRACED = 0x2 + _BPX_SWAP = 1 + _BPX_NONSWAP = 2 + MCL_CURRENT = 1 // for Linux compatibility -- no zos semantics + MCL_FUTURE = 2 // for Linux compatibility -- no zos semantics + MCL_ONFAULT = 3 // for Linux compatibility -- no zos semantics + MADV_NORMAL = 0 // for Linux compatibility -- no zos semantics + MADV_RANDOM = 1 // for Linux compatibility -- no zos semantics + MADV_SEQUENTIAL = 2 // for Linux compatibility -- no zos semantics + MADV_WILLNEED = 3 // for Linux compatibility -- no zos semantics + MADV_REMOVE = 4 // for Linux compatibility -- no zos semantics + MADV_DONTFORK = 5 // for Linux compatibility -- no zos semantics + MADV_DOFORK = 6 // for Linux compatibility -- no zos semantics + MADV_HWPOISON = 7 // for Linux compatibility -- no zos semantics + MADV_MERGEABLE = 8 // for Linux compatibility -- no zos semantics + MADV_UNMERGEABLE = 9 // for Linux compatibility -- no zos semantics + MADV_SOFT_OFFLINE = 10 // for Linux compatibility -- no zos semantics + MADV_HUGEPAGE = 11 // for Linux compatibility -- no zos semantics + MADV_NOHUGEPAGE = 12 // for Linux compatibility -- no zos semantics + MADV_DONTDUMP = 13 // for Linux compatibility -- no zos semantics + MADV_DODUMP = 14 // for Linux compatibility -- no zos semantics + MADV_FREE = 15 // for Linux compatibility -- no zos semantics + MADV_WIPEONFORK = 16 // for Linux compatibility -- no zos semantics + MADV_KEEPONFORK = 17 // for Linux compatibility -- no zos semantics + AT_SYMLINK_NOFOLLOW = 1 // for Unix compatibility -- no zos semantics + AT_FDCWD = 2 // for Unix compatibility -- no zos semantics +) + +const ( + EDOM = Errno(1) + ERANGE = Errno(2) + EACCES = Errno(111) + EAGAIN = Errno(112) + EBADF = Errno(113) + EBUSY = Errno(114) + ECHILD = Errno(115) + EDEADLK = Errno(116) + EEXIST = Errno(117) + EFAULT = Errno(118) + EFBIG = Errno(119) + EINTR = Errno(120) + EINVAL = Errno(121) + EIO = Errno(122) + EISDIR = Errno(123) + EMFILE = Errno(124) + EMLINK = Errno(125) + ENAMETOOLONG = Errno(126) + ENFILE = Errno(127) + ENODEV = Errno(128) + ENOENT = Errno(129) + ENOEXEC = Errno(130) + ENOLCK = Errno(131) + ENOMEM = Errno(132) + ENOSPC = Errno(133) + ENOSYS = Errno(134) + ENOTDIR = Errno(135) + ENOTEMPTY = Errno(136) + ENOTTY = Errno(137) + ENXIO = Errno(138) + EPERM = Errno(139) + EPIPE = Errno(140) + EROFS = Errno(141) + ESPIPE = Errno(142) + ESRCH = Errno(143) + EXDEV = Errno(144) + E2BIG = Errno(145) + ELOOP = Errno(146) + EILSEQ = Errno(147) + ENODATA = Errno(148) + EOVERFLOW = Errno(149) + EMVSNOTUP = Errno(150) + ECMSSTORAGE = Errno(151) + EMVSDYNALC = Errno(151) + EMVSCVAF = Errno(152) + EMVSCATLG = Errno(153) + ECMSINITIAL = Errno(156) + EMVSINITIAL = Errno(156) + ECMSERR = Errno(157) + EMVSERR = Errno(157) + EMVSPARM = Errno(158) + ECMSPFSFILE = Errno(159) + EMVSPFSFILE = Errno(159) + EMVSBADCHAR = Errno(160) + ECMSPFSPERM = Errno(162) + EMVSPFSPERM = Errno(162) + EMVSSAFEXTRERR = Errno(163) + EMVSSAF2ERR = Errno(164) + EMVSTODNOTSET = Errno(165) + EMVSPATHOPTS = Errno(166) + EMVSNORTL = Errno(167) + EMVSEXPIRE = Errno(168) + EMVSPASSWORD = Errno(169) + EMVSWLMERROR = Errno(170) + EMVSCPLERROR = Errno(171) + EMVSARMERROR = Errno(172) + ELENOFORK = Errno(200) + ELEMSGERR = Errno(201) + EFPMASKINV = Errno(202) + EFPMODEINV = Errno(203) + EBUFLEN = Errno(227) + EEXTLINK = Errno(228) + ENODD = Errno(229) + ECMSESMERR = Errno(230) + ECPERR = Errno(231) + ELEMULTITHREAD = Errno(232) + ELEFENCE = Errno(244) + EBADDATA = Errno(245) + EUNKNOWN = Errno(246) + ENOTSUP = Errno(247) + EBADNAME = Errno(248) + ENOTSAFE = Errno(249) + ELEMULTITHREADFORK = Errno(257) + ECUNNOENV = Errno(258) + ECUNNOCONV = Errno(259) + ECUNNOTALIGNED = Errno(260) + ECUNERR = Errno(262) + EIBMBADCALL = Errno(1000) + EIBMBADPARM = Errno(1001) + EIBMSOCKOUTOFRANGE = Errno(1002) + EIBMSOCKINUSE = Errno(1003) + EIBMIUCVERR = Errno(1004) + EOFFLOADboxERROR = Errno(1005) + EOFFLOADboxRESTART = Errno(1006) + EOFFLOADboxDOWN = Errno(1007) + EIBMCONFLICT = Errno(1008) + EIBMCANCELLED = Errno(1009) + EIBMBADTCPNAME = Errno(1011) + ENOTBLK = Errno(1100) + ETXTBSY = Errno(1101) + EWOULDBLOCK = Errno(1102) + EINPROGRESS = Errno(1103) + EALREADY = Errno(1104) + ENOTSOCK = Errno(1105) + EDESTADDRREQ = Errno(1106) + EMSGSIZE = Errno(1107) + EPROTOTYPE = Errno(1108) + ENOPROTOOPT = Errno(1109) + EPROTONOSUPPORT = Errno(1110) + ESOCKTNOSUPPORT = Errno(1111) + EOPNOTSUPP = Errno(1112) + EPFNOSUPPORT = Errno(1113) + EAFNOSUPPORT = Errno(1114) + EADDRINUSE = Errno(1115) + EADDRNOTAVAIL = Errno(1116) + ENETDOWN = Errno(1117) + ENETUNREACH = Errno(1118) + ENETRESET = Errno(1119) + ECONNABORTED = Errno(1120) + ECONNRESET = Errno(1121) + ENOBUFS = Errno(1122) + EISCONN = Errno(1123) + ENOTCONN = Errno(1124) + ESHUTDOWN = Errno(1125) + ETOOMANYREFS = Errno(1126) + ETIMEDOUT = Errno(1127) + ECONNREFUSED = Errno(1128) + EHOSTDOWN = Errno(1129) + EHOSTUNREACH = Errno(1130) + EPROCLIM = Errno(1131) + EUSERS = Errno(1132) + EDQUOT = Errno(1133) + ESTALE = Errno(1134) + EREMOTE = Errno(1135) + ENOSTR = Errno(1136) + ETIME = Errno(1137) + ENOSR = Errno(1138) + ENOMSG = Errno(1139) + EBADMSG = Errno(1140) + EIDRM = Errno(1141) + ENONET = Errno(1142) + ERREMOTE = Errno(1143) + ENOLINK = Errno(1144) + EADV = Errno(1145) + ESRMNT = Errno(1146) + ECOMM = Errno(1147) + EPROTO = Errno(1148) + EMULTIHOP = Errno(1149) + EDOTDOT = Errno(1150) + EREMCHG = Errno(1151) + ECANCELED = Errno(1152) + EINTRNODATA = Errno(1159) + ENOREUSE = Errno(1160) + ENOMOVE = Errno(1161) +) + +// Signals +const ( + SIGHUP = Signal(1) + SIGINT = Signal(2) + SIGABRT = Signal(3) + SIGILL = Signal(4) + SIGPOLL = Signal(5) + SIGURG = Signal(6) + SIGSTOP = Signal(7) + SIGFPE = Signal(8) + SIGKILL = Signal(9) + SIGBUS = Signal(10) + SIGSEGV = Signal(11) + SIGSYS = Signal(12) + SIGPIPE = Signal(13) + SIGALRM = Signal(14) + SIGTERM = Signal(15) + SIGUSR1 = Signal(16) + SIGUSR2 = Signal(17) + SIGABND = Signal(18) + SIGCONT = Signal(19) + SIGCHLD = Signal(20) + SIGTTIN = Signal(21) + SIGTTOU = Signal(22) + SIGIO = Signal(23) + SIGQUIT = Signal(24) + SIGTSTP = Signal(25) + SIGTRAP = Signal(26) + SIGIOERR = Signal(27) + SIGWINCH = Signal(28) + SIGXCPU = Signal(29) + SIGXFSZ = Signal(30) + SIGVTALRM = Signal(31) + SIGPROF = Signal(32) + SIGDANGER = Signal(33) + SIGTHSTOP = Signal(34) + SIGTHCONT = Signal(35) + SIGTRACE = Signal(37) + SIGDCE = Signal(38) + SIGDUMP = Signal(39) +) + +// Error table +var errorList = [...]struct { + num Errno + name string + desc string +}{ + {1, "EDC5001I", "A domain error occurred."}, + {2, "EDC5002I", "A range error occurred."}, + {111, "EDC5111I", "Permission denied."}, + {112, "EDC5112I", "Resource temporarily unavailable."}, + {113, "EDC5113I", "Bad file descriptor."}, + {114, "EDC5114I", "Resource busy."}, + {115, "EDC5115I", "No child processes."}, + {116, "EDC5116I", "Resource deadlock avoided."}, + {117, "EDC5117I", "File exists."}, + {118, "EDC5118I", "Incorrect address."}, + {119, "EDC5119I", "File too large."}, + {120, "EDC5120I", "Interrupted function call."}, + {121, "EDC5121I", "Invalid argument."}, + {122, "EDC5122I", "Input/output error."}, + {123, "EDC5123I", "Is a directory."}, + {124, "EDC5124I", "Too many open files."}, + {125, "EDC5125I", "Too many links."}, + {126, "EDC5126I", "Filename too long."}, + {127, "EDC5127I", "Too many open files in system."}, + {128, "EDC5128I", "No such device."}, + {129, "EDC5129I", "No such file or directory."}, + {130, "EDC5130I", "Exec format error."}, + {131, "EDC5131I", "No locks available."}, + {132, "EDC5132I", "Not enough memory."}, + {133, "EDC5133I", "No space left on device."}, + {134, "EDC5134I", "Function not implemented."}, + {135, "EDC5135I", "Not a directory."}, + {136, "EDC5136I", "Directory not empty."}, + {137, "EDC5137I", "Inappropriate I/O control operation."}, + {138, "EDC5138I", "No such device or address."}, + {139, "EDC5139I", "Operation not permitted."}, + {140, "EDC5140I", "Broken pipe."}, + {141, "EDC5141I", "Read-only file system."}, + {142, "EDC5142I", "Invalid seek."}, + {143, "EDC5143I", "No such process."}, + {144, "EDC5144I", "Improper link."}, + {145, "EDC5145I", "The parameter list is too long, or the message to receive was too large for the buffer."}, + {146, "EDC5146I", "Too many levels of symbolic links."}, + {147, "EDC5147I", "Illegal byte sequence."}, + {148, "", ""}, + {149, "EDC5149I", "Value Overflow Error."}, + {150, "EDC5150I", "UNIX System Services is not active."}, + {151, "EDC5151I", "Dynamic allocation error."}, + {152, "EDC5152I", "Common VTOC access facility (CVAF) error."}, + {153, "EDC5153I", "Catalog obtain error."}, + {156, "EDC5156I", "Process initialization error."}, + {157, "EDC5157I", "An internal error has occurred."}, + {158, "EDC5158I", "Bad parameters were passed to the service."}, + {159, "EDC5159I", "The Physical File System encountered a permanent file error."}, + {160, "EDC5160I", "Bad character in environment variable name."}, + {162, "EDC5162I", "The Physical File System encountered a system error."}, + {163, "EDC5163I", "SAF/RACF extract error."}, + {164, "EDC5164I", "SAF/RACF error."}, + {165, "EDC5165I", "System TOD clock not set."}, + {166, "EDC5166I", "Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement."}, + {167, "EDC5167I", "Access to the UNIX System Services version of the C RTL is denied."}, + {168, "EDC5168I", "Password has expired."}, + {169, "EDC5169I", "Password is invalid."}, + {170, "EDC5170I", "An error was encountered with WLM."}, + {171, "EDC5171I", "An error was encountered with CPL."}, + {172, "EDC5172I", "An error was encountered with Application Response Measurement (ARM) component."}, + {200, "EDC5200I", "The application contains a Language Environment member language that cannot tolerate a fork()."}, + {201, "EDC5201I", "The Language Environment message file was not found in the hierarchical file system."}, + {202, "EDC5202E", "DLL facilities are not supported under SPC environment."}, + {203, "EDC5203E", "DLL facilities are not supported under POSIX environment."}, + {227, "EDC5227I", "Buffer is not long enough to contain a path definition"}, + {228, "EDC5228I", "The file referred to is an external link"}, + {229, "EDC5229I", "No path definition for ddname in effect"}, + {230, "EDC5230I", "ESM error."}, + {231, "EDC5231I", "CP or the external security manager had an error"}, + {232, "EDC5232I", "The function failed because it was invoked from a multithread environment."}, + {244, "EDC5244I", "The program, module or DLL is not supported in this environment."}, + {245, "EDC5245I", "Data is not valid."}, + {246, "EDC5246I", "Unknown system state."}, + {247, "EDC5247I", "Operation not supported."}, + {248, "EDC5248I", "The object name specified is not correct."}, + {249, "EDC5249I", "The function is not allowed."}, + {257, "EDC5257I", "Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called."}, + {258, "EDC5258I", "A CUN_RS_NO_UNI_ENV error was issued by Unicode Services."}, + {259, "EDC5259I", "A CUN_RS_NO_CONVERSION error was issued by Unicode Services."}, + {260, "EDC5260I", "A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services."}, + {262, "EDC5262I", "An iconv() function encountered an unexpected error while using Unicode Services."}, + {1000, "EDC8000I", "A bad socket-call constant was found in the IUCV header."}, + {1001, "EDC8001I", "An error was found in the IUCV header."}, + {1002, "EDC8002I", "A socket descriptor is out of range."}, + {1003, "EDC8003I", "A socket descriptor is in use."}, + {1004, "EDC8004I", "Request failed because of an IUCV error."}, + {1005, "EDC8005I", "Offload box error."}, + {1006, "EDC8006I", "Offload box restarted."}, + {1007, "EDC8007I", "Offload box down."}, + {1008, "EDC8008I", "Already a conflicting call outstanding on socket."}, + {1009, "EDC8009I", "Request cancelled using a SOCKcallCANCEL request."}, + {1011, "EDC8011I", "A name of a PFS was specified that either is not configured or is not a Sockets PFS."}, + {1100, "EDC8100I", "Block device required."}, + {1101, "EDC8101I", "Text file busy."}, + {1102, "EDC8102I", "Operation would block."}, + {1103, "EDC8103I", "Operation now in progress."}, + {1104, "EDC8104I", "Connection already in progress."}, + {1105, "EDC8105I", "Socket operation on non-socket."}, + {1106, "EDC8106I", "Destination address required."}, + {1107, "EDC8107I", "Message too long."}, + {1108, "EDC8108I", "Protocol wrong type for socket."}, + {1109, "EDC8109I", "Protocol not available."}, + {1110, "EDC8110I", "Protocol not supported."}, + {1111, "EDC8111I", "Socket type not supported."}, + {1112, "EDC8112I", "Operation not supported on socket."}, + {1113, "EDC8113I", "Protocol family not supported."}, + {1114, "EDC8114I", "Address family not supported."}, + {1115, "EDC8115I", "Address already in use."}, + {1116, "EDC8116I", "Address not available."}, + {1117, "EDC8117I", "Network is down."}, + {1118, "EDC8118I", "Network is unreachable."}, + {1119, "EDC8119I", "Network dropped connection on reset."}, + {1120, "EDC8120I", "Connection ended abnormally."}, + {1121, "EDC8121I", "Connection reset."}, + {1122, "EDC8122I", "No buffer space available."}, + {1123, "EDC8123I", "Socket already connected."}, + {1124, "EDC8124I", "Socket not connected."}, + {1125, "EDC8125I", "Can't send after socket shutdown."}, + {1126, "EDC8126I", "Too many references; can't splice."}, + {1127, "EDC8127I", "Connection timed out."}, + {1128, "EDC8128I", "Connection refused."}, + {1129, "EDC8129I", "Host is not available."}, + {1130, "EDC8130I", "Host cannot be reached."}, + {1131, "EDC8131I", "Too many processes."}, + {1132, "EDC8132I", "Too many users."}, + {1133, "EDC8133I", "Disk quota exceeded."}, + {1134, "EDC8134I", "Stale file handle."}, + {1135, "", ""}, + {1136, "EDC8136I", "File is not a STREAM."}, + {1137, "EDC8137I", "STREAMS ioctl() timeout."}, + {1138, "EDC8138I", "No STREAMS resources."}, + {1139, "EDC8139I", "The message identified by set_id and msg_id is not in the message catalog."}, + {1140, "EDC8140I", "Bad message."}, + {1141, "EDC8141I", "Identifier removed."}, + {1142, "", ""}, + {1143, "", ""}, + {1144, "EDC8144I", "The link has been severed."}, + {1145, "", ""}, + {1146, "", ""}, + {1147, "", ""}, + {1148, "EDC8148I", "Protocol error."}, + {1149, "EDC8149I", "Multihop not allowed."}, + {1150, "", ""}, + {1151, "", ""}, + {1152, "EDC8152I", "The asynchronous I/O request has been canceled."}, + {1159, "EDC8159I", "Function call was interrupted before any data was received."}, + {1160, "EDC8160I", "Socket reuse is not supported."}, + {1161, "EDC8161I", "The file system cannot currently be moved."}, +} + +// Signal table +var signalList = [...]struct { + num Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGABT", "aborted"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGPOLL", "pollable event"}, + {6, "SIGURG", "urgent I/O condition"}, + {7, "SIGSTOP", "stop process"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad argument to routine"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGABND", "abend"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGQUIT", "quit"}, + {25, "SIGTSTP", "stopped"}, + {26, "SIGTRAP", "trace/breakpoint trap"}, + {27, "SIGIOER", "I/O error"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGXCPU", "CPU time limit exceeded"}, + {30, "SIGXFSZ", "file size limit exceeded"}, + {31, "SIGVTALRM", "virtual timer expired"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "danger"}, + {34, "SIGTHSTOP", "stop thread"}, + {35, "SIGTHCONT", "continue thread"}, + {37, "SIGTRACE", "trace"}, + {38, "", "DCE"}, + {39, "SIGDUMP", "dump"}, +} diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go index 89c5920e0..bd001a6e1 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT. +//go:build linux && (arm || arm64) // +build linux // +build arm arm64 diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go index 24b841eec..c34d0639b 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT. +//go:build linux && (mips || mips64) // +build linux // +build mips mips64 diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go index 47b048956..3ccf0c0c4 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT. +//go:build linux && (mipsle || mips64le) // +build linux // +build mipsle mips64le diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go index ea5d9cb53..7d6585700 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT. +//go:build linux && (386 || amd64) // +build linux // +build 386 amd64 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index ed657ff1b..91a23cc72 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -1,6 +1,7 @@ // go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build aix && ppc // +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index 664b293b4..33c2609b8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -1,6 +1,7 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build aix && ppc64 // +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go index 0550da06d..8b737fa97 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -1,8 +1,8 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. -// +build aix,ppc64 -// +build gc +//go:build aix && ppc64 && gc +// +build aix,ppc64,gc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go index cde4dbc5f..3c260917e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -1,8 +1,8 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. -// +build aix,ppc64 -// +build gccgo +//go:build aix && ppc64 && gccgo +// +build aix,ppc64,gccgo package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go index c8c142c59..48a62e390 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && 386 && go1.13 // +build darwin,386,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 387718348..a266636af 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && 386 && go1.12 // +build darwin,386,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go index 888262361..e36299ead 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && amd64 && go1.13 // +build darwin,amd64,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 508e5639b..f41116288 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && amd64 && go1.12 // +build darwin,amd64,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go index de4738fff..ed437f89a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm && go1.13 // +build darwin,arm,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index c0c771f40..7f88cb5ea 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm && go1.12 // +build darwin,arm,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go index 870eb37ab..d30ec4e29 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm64 && go1.13 // +build darwin,arm64,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 9b01a79c4..a10df58d0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm64 && go1.12 // +build darwin,arm64,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 1aaccd361..1b6eedfa6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build dragonfly && amd64 // +build dragonfly,amd64 package unix @@ -362,8 +363,10 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) +func pipe2(p *[2]_C_int, flags int) (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + r = int(r0) + w = int(r1) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index 600f1d26d..3e9bddb7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && 386 // +build freebsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 064934b0d..c72a462b9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && amd64 // +build freebsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 31d2c4616..530d5df90 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && arm // +build freebsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index 4adaaa561..71e7df9e8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && arm64 // +build freebsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go index 665dd9e4b..b57c7050d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build illumos && amd64 // +build illumos,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 2fbbbe5a8..3ee26f4ad 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 19ebd3ff7..e37096e4d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && 386 // +build linux,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 5c562182a..9919d8486 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && amd64 // +build linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index dc69d99c6..076754d48 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && arm // +build linux,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 1b897dee0..e893f987f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && arm64 // +build linux,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 49186843a..4703cf3c3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -1,6 +1,7 @@ // go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips // +build linux,mips package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index 9171d3bd2..a134f9a4d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips64 // +build linux,mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 82286f04f..b1fff2d94 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips64le // +build linux,mips64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 15920621c..d13d6da01 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mipsle // +build linux,mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 73a42e2cc..da8ec0396 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && ppc64 // +build linux,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 6b8559536..083f493bb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && ppc64le // +build linux,ppc64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index b76133447..63b393b80 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && riscv64 // +build linux,riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index d7032ab1e..bb347407d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && s390x // +build linux,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index bcbbdd906..8edc517e1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && sparc64 // +build linux,sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 3bbd9e39c..4726ab30a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && 386 // +build netbsd,386 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index d8cf5012c..fe71456db 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && amd64 // +build netbsd,amd64 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 1153fe69b..0b5b2f014 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && arm // +build netbsd,arm package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 24b4ebb41..bfca28648 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && arm64 // +build netbsd,arm64 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index b44b31aeb..8f80f4ade 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && 386 // +build openbsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 67f93ee76..3a47aca7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && amd64 // +build openbsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index d7c878b1d..883a9b45e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && arm // +build openbsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 8facd695d..aac7fdc95 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && arm64 // +build openbsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index ec6bd5bb7..877618746 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && mips64 // +build openbsd,mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 6dbb83716..7099f555a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build solaris && amd64 // +build solaris,amd64 package unix @@ -115,6 +116,7 @@ import ( //go:cgo_import_dynamic libc_statvfs statvfs "libc.so" //go:cgo_import_dynamic libc_symlink symlink "libc.so" //go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_sysconf sysconf "libc.so" //go:cgo_import_dynamic libc_times times "libc.so" //go:cgo_import_dynamic libc_truncate truncate "libc.so" //go:cgo_import_dynamic libc_fsync fsync "libc.so" @@ -245,6 +247,7 @@ import ( //go:linkname procStatvfs libc_statvfs //go:linkname procSymlink libc_symlink //go:linkname procSync libc_sync +//go:linkname procSysconf libc_sysconf //go:linkname procTimes libc_times //go:linkname procTruncate libc_truncate //go:linkname procFsync libc_fsync @@ -376,6 +379,7 @@ var ( procStatvfs, procSymlink, procSync, + procSysconf, procTimes, procTruncate, procFsync, @@ -1687,6 +1691,17 @@ func Sync() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Sysconf(which int) (n int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) + n = int64(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Times(tms *Tms) (ticks uintptr, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) ticks = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go new file mode 100644 index 000000000..8285ab841 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -0,0 +1,1217 @@ +// go run mksyscall.go -tags zos,s390x syscall_zos_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(SYS___ACCEPT_A, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(SYS___BIND_A, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(SYS___CONNECT_A, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawsyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___GETPEERNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___GETSOCKNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS___RECVFROM_A, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(SYS___SENDTO_A, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS___RECVMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS___SENDMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___ACCESS_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHMOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(SYS___CREAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := syscall_syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := syscall_syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { + r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + retval = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_LE_t) (err error) { + _, _, e1 := syscall_syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, stat *Statvfs_t) (err error) { + _, _, e1 := syscall_syscall(SYS_FSTATVFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpagesize() (pgsize int) { + r0, _, _ := syscall_syscall(SYS_GETPAGESIZE, 0, 0, 0) + pgsize = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var _p0 unsafe.Pointer + if len(fds) > 0 { + _p0 = unsafe.Pointer(&fds[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_POLL, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := syscall_syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent(buff *byte, size int) (lastsys int, err error) { + r0, _, e1 := syscall_syscall(SYS_W_GETMNTENT, uintptr(unsafe.Pointer(buff)), uintptr(size), 0) + lastsys = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(filesystem) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(parm) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(SYS___MOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(filesystem string, mtm int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(filesystem) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UMOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mtm), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHROOT_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___UNAME_A, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gethostname(buf []byte) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS___GETHOSTNAME_A, uintptr(_p0), uintptr(len(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (pid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETPPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrusage(who int, rusage *rusage_zos) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LCHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := syscall_syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LSTAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKDIR_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKFIFO_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKNOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS___READLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___RENAME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___RMDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := syscall_syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETGID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statLE *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___STAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___SYMLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + syscall_syscall(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___TRUNCATE_A, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcgetattr(fildes int, termptr *Termios) (err error) { + _, _, e1 := syscall_syscall(SYS_TCGETATTR, uintptr(fildes), uintptr(unsafe.Pointer(termptr)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { + _, _, e1 := syscall_syscall(SYS_TCSETATTR, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := syscall_syscall(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UNLINK_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, utim *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UTIME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(SYS___OPEN_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func remove(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { + r0, _, e1 := syscall_syscall(SYS_WAITPID, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *timeval_zos) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UTIMES_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index 102f1ab47..9e9d0b2a9 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index 4866fced8..adecd0966 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index d3801eb24..8ea52a4a1 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go index ba4304fd2..154b57ae3 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go index aca34b349..d96bb2ba4 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go index ad62324c7..1794ffc92 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go index a2fc91d6a..f8298ff9b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go index 20d7808ac..6dc736449 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go index 527b9588c..5eb433bbf 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go index 9912c6ee3..703675c0c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 9474974b6..59d5dfc20 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 48a7beae7..342d471d2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 4a6dfd4a7..e2e3d72c5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 3e51af8ed..61ad5ca3c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index f6742bdee..8e5359713 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux package unix @@ -436,4 +437,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index f7e525573..d7dceb769 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux package unix @@ -358,4 +359,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 3f60977da..04093a69f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index dbedf4cba..48f94f135 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux package unix @@ -303,4 +304,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index eeff7e1dc..499978c3e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux package unix @@ -421,4 +422,5 @@ const ( SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 73cfa535c..10d1db2be 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux package unix @@ -351,4 +352,5 @@ const ( SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index be74729e0..208d5dcd5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux package unix @@ -351,4 +352,5 @@ const ( SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 2a1047c81..f8250602e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux package unix @@ -421,4 +422,5 @@ const ( SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 32707428c..d5ed3ff51 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index a58572f78..e29b4424c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 72a65b760..41deed6c3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux package unix @@ -302,4 +303,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 1fb9ae5d4..8e53a9e8c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux package unix @@ -365,4 +366,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 57636e09e..596e5bc7d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux package unix @@ -379,4 +380,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go index e66a8c9d3..3a6699eba 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go index 42c788f24..5677cd4f1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go index 0a0757179..e784cb6db 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go index 0291c0931..bd4952efa 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go index b0207d1c9..817edbf95 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go index f0dec6f0b..ea453614e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go index 33d1dc540..467971eed 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go index fe2b689b6..32eec5ed5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go index 5c08d573b..a37f77375 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go new file mode 100644 index 000000000..073daad43 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -0,0 +1,2670 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +// TODO: auto-generate. + +const ( + SYS_ACOSD128 = 0xB80 + SYS_ACOSD32 = 0xB7E + SYS_ACOSD64 = 0xB7F + SYS_ACOSHD128 = 0xB83 + SYS_ACOSHD32 = 0xB81 + SYS_ACOSHD64 = 0xB82 + SYS_AIO_FSYNC = 0xC69 + SYS_ASCTIME = 0x0AE + SYS_ASCTIME64 = 0xCD7 + SYS_ASCTIME64_R = 0xCD8 + SYS_ASIND128 = 0xB86 + SYS_ASIND32 = 0xB84 + SYS_ASIND64 = 0xB85 + SYS_ASINHD128 = 0xB89 + SYS_ASINHD32 = 0xB87 + SYS_ASINHD64 = 0xB88 + SYS_ATAN2D128 = 0xB8F + SYS_ATAN2D32 = 0xB8D + SYS_ATAN2D64 = 0xB8E + SYS_ATAND128 = 0xB8C + SYS_ATAND32 = 0xB8A + SYS_ATAND64 = 0xB8B + SYS_ATANHD128 = 0xB92 + SYS_ATANHD32 = 0xB90 + SYS_ATANHD64 = 0xB91 + SYS_BIND2ADDRSEL = 0xD59 + SYS_C16RTOMB = 0xD40 + SYS_C32RTOMB = 0xD41 + SYS_CBRTD128 = 0xB95 + SYS_CBRTD32 = 0xB93 + SYS_CBRTD64 = 0xB94 + SYS_CEILD128 = 0xB98 + SYS_CEILD32 = 0xB96 + SYS_CEILD64 = 0xB97 + SYS_CLEARENV = 0x0C9 + SYS_CLEARERR_UNLOCKED = 0xCA1 + SYS_CLOCK = 0x0AA + SYS_CLOGL = 0xA00 + SYS_CLRMEMF = 0x0BD + SYS_CONJ = 0xA03 + SYS_CONJF = 0xA06 + SYS_CONJL = 0xA09 + SYS_COPYSIGND128 = 0xB9E + SYS_COPYSIGND32 = 0xB9C + SYS_COPYSIGND64 = 0xB9D + SYS_COSD128 = 0xBA1 + SYS_COSD32 = 0xB9F + SYS_COSD64 = 0xBA0 + SYS_COSHD128 = 0xBA4 + SYS_COSHD32 = 0xBA2 + SYS_COSHD64 = 0xBA3 + SYS_CPOW = 0xA0C + SYS_CPOWF = 0xA0F + SYS_CPOWL = 0xA12 + SYS_CPROJ = 0xA15 + SYS_CPROJF = 0xA18 + SYS_CPROJL = 0xA1B + SYS_CREAL = 0xA1E + SYS_CREALF = 0xA21 + SYS_CREALL = 0xA24 + SYS_CSIN = 0xA27 + SYS_CSINF = 0xA2A + SYS_CSINH = 0xA30 + SYS_CSINHF = 0xA33 + SYS_CSINHL = 0xA36 + SYS_CSINL = 0xA2D + SYS_CSNAP = 0x0C5 + SYS_CSQRT = 0xA39 + SYS_CSQRTF = 0xA3C + SYS_CSQRTL = 0xA3F + SYS_CTAN = 0xA42 + SYS_CTANF = 0xA45 + SYS_CTANH = 0xA4B + SYS_CTANHF = 0xA4E + SYS_CTANHL = 0xA51 + SYS_CTANL = 0xA48 + SYS_CTIME = 0x0AB + SYS_CTIME64 = 0xCD9 + SYS_CTIME64_R = 0xCDA + SYS_CTRACE = 0x0C6 + SYS_DIFFTIME = 0x0A7 + SYS_DIFFTIME64 = 0xCDB + SYS_DLADDR = 0xC82 + SYS_DYNALLOC = 0x0C3 + SYS_DYNFREE = 0x0C2 + SYS_ERFCD128 = 0xBAA + SYS_ERFCD32 = 0xBA8 + SYS_ERFCD64 = 0xBA9 + SYS_ERFD128 = 0xBA7 + SYS_ERFD32 = 0xBA5 + SYS_ERFD64 = 0xBA6 + SYS_EXP2D128 = 0xBB0 + SYS_EXP2D32 = 0xBAE + SYS_EXP2D64 = 0xBAF + SYS_EXPD128 = 0xBAD + SYS_EXPD32 = 0xBAB + SYS_EXPD64 = 0xBAC + SYS_EXPM1D128 = 0xBB3 + SYS_EXPM1D32 = 0xBB1 + SYS_EXPM1D64 = 0xBB2 + SYS_FABSD128 = 0xBB6 + SYS_FABSD32 = 0xBB4 + SYS_FABSD64 = 0xBB5 + SYS_FDELREC_UNLOCKED = 0xCA2 + SYS_FDIMD128 = 0xBB9 + SYS_FDIMD32 = 0xBB7 + SYS_FDIMD64 = 0xBB8 + SYS_FDOPEN_UNLOCKED = 0xCFC + SYS_FECLEAREXCEPT = 0xAEA + SYS_FEGETENV = 0xAEB + SYS_FEGETEXCEPTFLAG = 0xAEC + SYS_FEGETROUND = 0xAED + SYS_FEHOLDEXCEPT = 0xAEE + SYS_FEOF_UNLOCKED = 0xCA3 + SYS_FERAISEEXCEPT = 0xAEF + SYS_FERROR_UNLOCKED = 0xCA4 + SYS_FESETENV = 0xAF0 + SYS_FESETEXCEPTFLAG = 0xAF1 + SYS_FESETROUND = 0xAF2 + SYS_FETCHEP = 0x0BF + SYS_FETESTEXCEPT = 0xAF3 + SYS_FEUPDATEENV = 0xAF4 + SYS_FE_DEC_GETROUND = 0xBBA + SYS_FE_DEC_SETROUND = 0xBBB + SYS_FFLUSH_UNLOCKED = 0xCA5 + SYS_FGETC_UNLOCKED = 0xC80 + SYS_FGETPOS64 = 0xCEE + SYS_FGETPOS64_UNLOCKED = 0xCF4 + SYS_FGETPOS_UNLOCKED = 0xCA6 + SYS_FGETS_UNLOCKED = 0xC7C + SYS_FGETWC_UNLOCKED = 0xCA7 + SYS_FGETWS_UNLOCKED = 0xCA8 + SYS_FILENO_UNLOCKED = 0xCA9 + SYS_FLDATA = 0x0C1 + SYS_FLDATA_UNLOCKED = 0xCAA + SYS_FLOCATE_UNLOCKED = 0xCAB + SYS_FLOORD128 = 0xBBE + SYS_FLOORD32 = 0xBBC + SYS_FLOORD64 = 0xBBD + SYS_FMA = 0xA63 + SYS_FMAD128 = 0xBC1 + SYS_FMAD32 = 0xBBF + SYS_FMAD64 = 0xBC0 + SYS_FMAF = 0xA66 + SYS_FMAL = 0xA69 + SYS_FMAX = 0xA6C + SYS_FMAXD128 = 0xBC4 + SYS_FMAXD32 = 0xBC2 + SYS_FMAXD64 = 0xBC3 + SYS_FMAXF = 0xA6F + SYS_FMAXL = 0xA72 + SYS_FMIN = 0xA75 + SYS_FMIND128 = 0xBC7 + SYS_FMIND32 = 0xBC5 + SYS_FMIND64 = 0xBC6 + SYS_FMINF = 0xA78 + SYS_FMINL = 0xA7B + SYS_FMODD128 = 0xBCA + SYS_FMODD32 = 0xBC8 + SYS_FMODD64 = 0xBC9 + SYS_FOPEN64 = 0xD49 + SYS_FOPEN64_UNLOCKED = 0xD4A + SYS_FOPEN_UNLOCKED = 0xCFA + SYS_FPRINTF_UNLOCKED = 0xCAC + SYS_FPUTC_UNLOCKED = 0xC81 + SYS_FPUTS_UNLOCKED = 0xC7E + SYS_FPUTWC_UNLOCKED = 0xCAD + SYS_FPUTWS_UNLOCKED = 0xCAE + SYS_FREAD_NOUPDATE = 0xCEC + SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED + SYS_FREAD_UNLOCKED = 0xC7B + SYS_FREEIFADDRS = 0xCE6 + SYS_FREOPEN64 = 0xD4B + SYS_FREOPEN64_UNLOCKED = 0xD4C + SYS_FREOPEN_UNLOCKED = 0xCFB + SYS_FREXPD128 = 0xBCE + SYS_FREXPD32 = 0xBCC + SYS_FREXPD64 = 0xBCD + SYS_FSCANF_UNLOCKED = 0xCAF + SYS_FSEEK64 = 0xCEF + SYS_FSEEK64_UNLOCKED = 0xCF5 + SYS_FSEEKO64 = 0xCF0 + SYS_FSEEKO64_UNLOCKED = 0xCF6 + SYS_FSEEKO_UNLOCKED = 0xCB1 + SYS_FSEEK_UNLOCKED = 0xCB0 + SYS_FSETPOS64 = 0xCF1 + SYS_FSETPOS64_UNLOCKED = 0xCF7 + SYS_FSETPOS_UNLOCKED = 0xCB3 + SYS_FTELL64 = 0xCF2 + SYS_FTELL64_UNLOCKED = 0xCF8 + SYS_FTELLO64 = 0xCF3 + SYS_FTELLO64_UNLOCKED = 0xCF9 + SYS_FTELLO_UNLOCKED = 0xCB5 + SYS_FTELL_UNLOCKED = 0xCB4 + SYS_FUPDATE = 0x0B5 + SYS_FUPDATE_UNLOCKED = 0xCB7 + SYS_FWIDE_UNLOCKED = 0xCB8 + SYS_FWPRINTF_UNLOCKED = 0xCB9 + SYS_FWRITE_UNLOCKED = 0xC7A + SYS_FWSCANF_UNLOCKED = 0xCBA + SYS_GETDATE64 = 0xD4F + SYS_GETIFADDRS = 0xCE7 + SYS_GETIPV4SOURCEFILTER = 0xC77 + SYS_GETSOURCEFILTER = 0xC79 + SYS_GETSYNTX = 0x0FD + SYS_GETS_UNLOCKED = 0xC7D + SYS_GETTIMEOFDAY64 = 0xD50 + SYS_GETWCHAR_UNLOCKED = 0xCBC + SYS_GETWC_UNLOCKED = 0xCBB + SYS_GMTIME = 0x0B0 + SYS_GMTIME64 = 0xCDC + SYS_GMTIME64_R = 0xCDD + SYS_HYPOTD128 = 0xBD1 + SYS_HYPOTD32 = 0xBCF + SYS_HYPOTD64 = 0xBD0 + SYS_ILOGBD128 = 0xBD4 + SYS_ILOGBD32 = 0xBD2 + SYS_ILOGBD64 = 0xBD3 + SYS_ILOGBF = 0xA7E + SYS_ILOGBL = 0xA81 + SYS_INET6_IS_SRCADDR = 0xD5A + SYS_ISBLANK = 0x0FE + SYS_ISWALNUM = 0x0FF + SYS_LDEXPD128 = 0xBD7 + SYS_LDEXPD32 = 0xBD5 + SYS_LDEXPD64 = 0xBD6 + SYS_LGAMMAD128 = 0xBDA + SYS_LGAMMAD32 = 0xBD8 + SYS_LGAMMAD64 = 0xBD9 + SYS_LIO_LISTIO = 0xC6A + SYS_LLRINT = 0xA84 + SYS_LLRINTD128 = 0xBDD + SYS_LLRINTD32 = 0xBDB + SYS_LLRINTD64 = 0xBDC + SYS_LLRINTF = 0xA87 + SYS_LLRINTL = 0xA8A + SYS_LLROUND = 0xA8D + SYS_LLROUNDD128 = 0xBE0 + SYS_LLROUNDD32 = 0xBDE + SYS_LLROUNDD64 = 0xBDF + SYS_LLROUNDF = 0xA90 + SYS_LLROUNDL = 0xA93 + SYS_LOCALTIM = 0x0B1 + SYS_LOCALTIME = 0x0B1 + SYS_LOCALTIME64 = 0xCDE + SYS_LOCALTIME64_R = 0xCDF + SYS_LOG10D128 = 0xBE6 + SYS_LOG10D32 = 0xBE4 + SYS_LOG10D64 = 0xBE5 + SYS_LOG1PD128 = 0xBE9 + SYS_LOG1PD32 = 0xBE7 + SYS_LOG1PD64 = 0xBE8 + SYS_LOG2D128 = 0xBEC + SYS_LOG2D32 = 0xBEA + SYS_LOG2D64 = 0xBEB + SYS_LOGBD128 = 0xBEF + SYS_LOGBD32 = 0xBED + SYS_LOGBD64 = 0xBEE + SYS_LOGBF = 0xA96 + SYS_LOGBL = 0xA99 + SYS_LOGD128 = 0xBE3 + SYS_LOGD32 = 0xBE1 + SYS_LOGD64 = 0xBE2 + SYS_LRINT = 0xA9C + SYS_LRINTD128 = 0xBF2 + SYS_LRINTD32 = 0xBF0 + SYS_LRINTD64 = 0xBF1 + SYS_LRINTF = 0xA9F + SYS_LRINTL = 0xAA2 + SYS_LROUNDD128 = 0xBF5 + SYS_LROUNDD32 = 0xBF3 + SYS_LROUNDD64 = 0xBF4 + SYS_LROUNDL = 0xAA5 + SYS_MBLEN = 0x0AF + SYS_MBRTOC16 = 0xD42 + SYS_MBRTOC32 = 0xD43 + SYS_MEMSET = 0x0A3 + SYS_MKTIME = 0x0AC + SYS_MKTIME64 = 0xCE0 + SYS_MODFD128 = 0xBF8 + SYS_MODFD32 = 0xBF6 + SYS_MODFD64 = 0xBF7 + SYS_NAN = 0xAA8 + SYS_NAND128 = 0xBFB + SYS_NAND32 = 0xBF9 + SYS_NAND64 = 0xBFA + SYS_NANF = 0xAAA + SYS_NANL = 0xAAC + SYS_NEARBYINT = 0xAAE + SYS_NEARBYINTD128 = 0xBFE + SYS_NEARBYINTD32 = 0xBFC + SYS_NEARBYINTD64 = 0xBFD + SYS_NEARBYINTF = 0xAB1 + SYS_NEARBYINTL = 0xAB4 + SYS_NEXTAFTERD128 = 0xC01 + SYS_NEXTAFTERD32 = 0xBFF + SYS_NEXTAFTERD64 = 0xC00 + SYS_NEXTAFTERF = 0xAB7 + SYS_NEXTAFTERL = 0xABA + SYS_NEXTTOWARD = 0xABD + SYS_NEXTTOWARDD128 = 0xC04 + SYS_NEXTTOWARDD32 = 0xC02 + SYS_NEXTTOWARDD64 = 0xC03 + SYS_NEXTTOWARDF = 0xAC0 + SYS_NEXTTOWARDL = 0xAC3 + SYS_NL_LANGINFO = 0x0FC + SYS_PERROR_UNLOCKED = 0xCBD + SYS_POSIX_FALLOCATE = 0xCE8 + SYS_POSIX_MEMALIGN = 0xCE9 + SYS_POSIX_OPENPT = 0xC66 + SYS_POWD128 = 0xC07 + SYS_POWD32 = 0xC05 + SYS_POWD64 = 0xC06 + SYS_PRINTF_UNLOCKED = 0xCBE + SYS_PSELECT = 0xC67 + SYS_PTHREAD_ATTR_GETSTACK = 0xB3E + SYS_PTHREAD_ATTR_SETSTACK = 0xB3F + SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 + SYS_PUTS_UNLOCKED = 0xC7F + SYS_PUTWCHAR_UNLOCKED = 0xCC0 + SYS_PUTWC_UNLOCKED = 0xCBF + SYS_QUANTEXPD128 = 0xD46 + SYS_QUANTEXPD32 = 0xD44 + SYS_QUANTEXPD64 = 0xD45 + SYS_QUANTIZED128 = 0xC0A + SYS_QUANTIZED32 = 0xC08 + SYS_QUANTIZED64 = 0xC09 + SYS_REMAINDERD128 = 0xC0D + SYS_REMAINDERD32 = 0xC0B + SYS_REMAINDERD64 = 0xC0C + SYS_RESIZE_ALLOC = 0xCEB + SYS_REWIND_UNLOCKED = 0xCC1 + SYS_RINTD128 = 0xC13 + SYS_RINTD32 = 0xC11 + SYS_RINTD64 = 0xC12 + SYS_RINTF = 0xACB + SYS_RINTL = 0xACD + SYS_ROUND = 0xACF + SYS_ROUNDD128 = 0xC16 + SYS_ROUNDD32 = 0xC14 + SYS_ROUNDD64 = 0xC15 + SYS_ROUNDF = 0xAD2 + SYS_ROUNDL = 0xAD5 + SYS_SAMEQUANTUMD128 = 0xC19 + SYS_SAMEQUANTUMD32 = 0xC17 + SYS_SAMEQUANTUMD64 = 0xC18 + SYS_SCALBLN = 0xAD8 + SYS_SCALBLND128 = 0xC1C + SYS_SCALBLND32 = 0xC1A + SYS_SCALBLND64 = 0xC1B + SYS_SCALBLNF = 0xADB + SYS_SCALBLNL = 0xADE + SYS_SCALBND128 = 0xC1F + SYS_SCALBND32 = 0xC1D + SYS_SCALBND64 = 0xC1E + SYS_SCALBNF = 0xAE3 + SYS_SCALBNL = 0xAE6 + SYS_SCANF_UNLOCKED = 0xCC2 + SYS_SCHED_YIELD = 0xB32 + SYS_SETENV = 0x0C8 + SYS_SETIPV4SOURCEFILTER = 0xC76 + SYS_SETSOURCEFILTER = 0xC78 + SYS_SHM_OPEN = 0xC8C + SYS_SHM_UNLINK = 0xC8D + SYS_SIND128 = 0xC22 + SYS_SIND32 = 0xC20 + SYS_SIND64 = 0xC21 + SYS_SINHD128 = 0xC25 + SYS_SINHD32 = 0xC23 + SYS_SINHD64 = 0xC24 + SYS_SIZEOF_ALLOC = 0xCEA + SYS_SOCKATMARK = 0xC68 + SYS_SQRTD128 = 0xC28 + SYS_SQRTD32 = 0xC26 + SYS_SQRTD64 = 0xC27 + SYS_STRCHR = 0x0A0 + SYS_STRCSPN = 0x0A1 + SYS_STRERROR = 0x0A8 + SYS_STRERROR_R = 0xB33 + SYS_STRFTIME = 0x0B2 + SYS_STRLEN = 0x0A9 + SYS_STRPBRK = 0x0A2 + SYS_STRSPN = 0x0A4 + SYS_STRSTR = 0x0A5 + SYS_STRTOD128 = 0xC2B + SYS_STRTOD32 = 0xC29 + SYS_STRTOD64 = 0xC2A + SYS_STRTOK = 0x0A6 + SYS_TAND128 = 0xC2E + SYS_TAND32 = 0xC2C + SYS_TAND64 = 0xC2D + SYS_TANHD128 = 0xC31 + SYS_TANHD32 = 0xC2F + SYS_TANHD64 = 0xC30 + SYS_TGAMMAD128 = 0xC34 + SYS_TGAMMAD32 = 0xC32 + SYS_TGAMMAD64 = 0xC33 + SYS_TIME = 0x0AD + SYS_TIME64 = 0xCE1 + SYS_TMPFILE64 = 0xD4D + SYS_TMPFILE64_UNLOCKED = 0xD4E + SYS_TMPFILE_UNLOCKED = 0xCFD + SYS_TRUNCD128 = 0xC40 + SYS_TRUNCD32 = 0xC3E + SYS_TRUNCD64 = 0xC3F + SYS_UNGETC_UNLOCKED = 0xCC3 + SYS_UNGETWC_UNLOCKED = 0xCC4 + SYS_UNSETENV = 0xB34 + SYS_VFPRINTF_UNLOCKED = 0xCC5 + SYS_VFSCANF_UNLOCKED = 0xCC7 + SYS_VFWPRINTF_UNLOCKED = 0xCC9 + SYS_VFWSCANF_UNLOCKED = 0xCCB + SYS_VPRINTF_UNLOCKED = 0xCCD + SYS_VSCANF_UNLOCKED = 0xCCF + SYS_VWPRINTF_UNLOCKED = 0xCD1 + SYS_VWSCANF_UNLOCKED = 0xCD3 + SYS_WCSTOD128 = 0xC43 + SYS_WCSTOD32 = 0xC41 + SYS_WCSTOD64 = 0xC42 + SYS_WPRINTF_UNLOCKED = 0xCD5 + SYS_WSCANF_UNLOCKED = 0xCD6 + SYS__FLUSHLBF = 0xD68 + SYS__FLUSHLBF_UNLOCKED = 0xD6F + SYS___ACOSHF_H = 0xA54 + SYS___ACOSHL_H = 0xA55 + SYS___ASINHF_H = 0xA56 + SYS___ASINHL_H = 0xA57 + SYS___ATANPID128 = 0xC6D + SYS___ATANPID32 = 0xC6B + SYS___ATANPID64 = 0xC6C + SYS___CBRTF_H = 0xA58 + SYS___CBRTL_H = 0xA59 + SYS___CDUMP = 0x0C4 + SYS___CLASS = 0xAFA + SYS___CLASS2 = 0xB99 + SYS___CLASS2D128 = 0xC99 + SYS___CLASS2D32 = 0xC97 + SYS___CLASS2D64 = 0xC98 + SYS___CLASS2F = 0xC91 + SYS___CLASS2F_B = 0xC93 + SYS___CLASS2F_H = 0xC94 + SYS___CLASS2L = 0xC92 + SYS___CLASS2L_B = 0xC95 + SYS___CLASS2L_H = 0xC96 + SYS___CLASS2_B = 0xB9A + SYS___CLASS2_H = 0xB9B + SYS___CLASS_B = 0xAFB + SYS___CLASS_H = 0xAFC + SYS___CLOGL_B = 0xA01 + SYS___CLOGL_H = 0xA02 + SYS___CLRENV = 0x0C9 + SYS___CLRMF = 0x0BD + SYS___CODEPAGE_INFO = 0xC64 + SYS___CONJF_B = 0xA07 + SYS___CONJF_H = 0xA08 + SYS___CONJL_B = 0xA0A + SYS___CONJL_H = 0xA0B + SYS___CONJ_B = 0xA04 + SYS___CONJ_H = 0xA05 + SYS___COPYSIGN_B = 0xA5A + SYS___COPYSIGN_H = 0xAF5 + SYS___COSPID128 = 0xC70 + SYS___COSPID32 = 0xC6E + SYS___COSPID64 = 0xC6F + SYS___CPOWF_B = 0xA10 + SYS___CPOWF_H = 0xA11 + SYS___CPOWL_B = 0xA13 + SYS___CPOWL_H = 0xA14 + SYS___CPOW_B = 0xA0D + SYS___CPOW_H = 0xA0E + SYS___CPROJF_B = 0xA19 + SYS___CPROJF_H = 0xA1A + SYS___CPROJL_B = 0xA1C + SYS___CPROJL_H = 0xA1D + SYS___CPROJ_B = 0xA16 + SYS___CPROJ_H = 0xA17 + SYS___CREALF_B = 0xA22 + SYS___CREALF_H = 0xA23 + SYS___CREALL_B = 0xA25 + SYS___CREALL_H = 0xA26 + SYS___CREAL_B = 0xA1F + SYS___CREAL_H = 0xA20 + SYS___CSINF_B = 0xA2B + SYS___CSINF_H = 0xA2C + SYS___CSINHF_B = 0xA34 + SYS___CSINHF_H = 0xA35 + SYS___CSINHL_B = 0xA37 + SYS___CSINHL_H = 0xA38 + SYS___CSINH_B = 0xA31 + SYS___CSINH_H = 0xA32 + SYS___CSINL_B = 0xA2E + SYS___CSINL_H = 0xA2F + SYS___CSIN_B = 0xA28 + SYS___CSIN_H = 0xA29 + SYS___CSNAP = 0x0C5 + SYS___CSQRTF_B = 0xA3D + SYS___CSQRTF_H = 0xA3E + SYS___CSQRTL_B = 0xA40 + SYS___CSQRTL_H = 0xA41 + SYS___CSQRT_B = 0xA3A + SYS___CSQRT_H = 0xA3B + SYS___CTANF_B = 0xA46 + SYS___CTANF_H = 0xA47 + SYS___CTANHF_B = 0xA4F + SYS___CTANHF_H = 0xA50 + SYS___CTANHL_B = 0xA52 + SYS___CTANHL_H = 0xA53 + SYS___CTANH_B = 0xA4C + SYS___CTANH_H = 0xA4D + SYS___CTANL_B = 0xA49 + SYS___CTANL_H = 0xA4A + SYS___CTAN_B = 0xA43 + SYS___CTAN_H = 0xA44 + SYS___CTEST = 0x0C7 + SYS___CTRACE = 0x0C6 + SYS___D1TOP = 0xC9B + SYS___D2TOP = 0xC9C + SYS___D4TOP = 0xC9D + SYS___DYNALL = 0x0C3 + SYS___DYNFRE = 0x0C2 + SYS___EXP2F_H = 0xA5E + SYS___EXP2L_H = 0xA5F + SYS___EXP2_H = 0xA5D + SYS___EXPM1F_H = 0xA5B + SYS___EXPM1L_H = 0xA5C + SYS___FBUFSIZE = 0xD60 + SYS___FLBF = 0xD62 + SYS___FLDATA = 0x0C1 + SYS___FMAF_B = 0xA67 + SYS___FMAF_H = 0xA68 + SYS___FMAL_B = 0xA6A + SYS___FMAL_H = 0xA6B + SYS___FMAXF_B = 0xA70 + SYS___FMAXF_H = 0xA71 + SYS___FMAXL_B = 0xA73 + SYS___FMAXL_H = 0xA74 + SYS___FMAX_B = 0xA6D + SYS___FMAX_H = 0xA6E + SYS___FMA_B = 0xA64 + SYS___FMA_H = 0xA65 + SYS___FMINF_B = 0xA79 + SYS___FMINF_H = 0xA7A + SYS___FMINL_B = 0xA7C + SYS___FMINL_H = 0xA7D + SYS___FMIN_B = 0xA76 + SYS___FMIN_H = 0xA77 + SYS___FPENDING = 0xD61 + SYS___FPENDING_UNLOCKED = 0xD6C + SYS___FPURGE = 0xD69 + SYS___FPURGE_UNLOCKED = 0xD70 + SYS___FP_CAST_D = 0xBCB + SYS___FREADABLE = 0xD63 + SYS___FREADAHEAD = 0xD6A + SYS___FREADAHEAD_UNLOCKED = 0xD71 + SYS___FREADING = 0xD65 + SYS___FREADING_UNLOCKED = 0xD6D + SYS___FSEEK2 = 0xB3C + SYS___FSETERR = 0xD6B + SYS___FSETLOCKING = 0xD67 + SYS___FTCHEP = 0x0BF + SYS___FTELL2 = 0xB3B + SYS___FUPDT = 0x0B5 + SYS___FWRITABLE = 0xD64 + SYS___FWRITING = 0xD66 + SYS___FWRITING_UNLOCKED = 0xD6E + SYS___GETCB = 0x0B4 + SYS___GETGRGID1 = 0xD5B + SYS___GETGRNAM1 = 0xD5C + SYS___GETTHENT = 0xCE5 + SYS___GETTOD = 0xD3E + SYS___HYPOTF_H = 0xAF6 + SYS___HYPOTL_H = 0xAF7 + SYS___ILOGBF_B = 0xA7F + SYS___ILOGBF_H = 0xA80 + SYS___ILOGBL_B = 0xA82 + SYS___ILOGBL_H = 0xA83 + SYS___ISBLANK_A = 0xB2E + SYS___ISBLNK = 0x0FE + SYS___ISWBLANK_A = 0xB2F + SYS___LE_CEEGTJS = 0xD72 + SYS___LE_TRACEBACK = 0xB7A + SYS___LGAMMAL_H = 0xA62 + SYS___LGAMMA_B_C99 = 0xB39 + SYS___LGAMMA_H_C99 = 0xB38 + SYS___LGAMMA_R_C99 = 0xB3A + SYS___LLRINTF_B = 0xA88 + SYS___LLRINTF_H = 0xA89 + SYS___LLRINTL_B = 0xA8B + SYS___LLRINTL_H = 0xA8C + SYS___LLRINT_B = 0xA85 + SYS___LLRINT_H = 0xA86 + SYS___LLROUNDF_B = 0xA91 + SYS___LLROUNDF_H = 0xA92 + SYS___LLROUNDL_B = 0xA94 + SYS___LLROUNDL_H = 0xA95 + SYS___LLROUND_B = 0xA8E + SYS___LLROUND_H = 0xA8F + SYS___LOCALE_CTL = 0xD47 + SYS___LOG1PF_H = 0xA60 + SYS___LOG1PL_H = 0xA61 + SYS___LOGBF_B = 0xA97 + SYS___LOGBF_H = 0xA98 + SYS___LOGBL_B = 0xA9A + SYS___LOGBL_H = 0xA9B + SYS___LOGIN_APPLID = 0xCE2 + SYS___LRINTF_B = 0xAA0 + SYS___LRINTF_H = 0xAA1 + SYS___LRINTL_B = 0xAA3 + SYS___LRINTL_H = 0xAA4 + SYS___LRINT_B = 0xA9D + SYS___LRINT_H = 0xA9E + SYS___LROUNDF_FIXUP = 0xB31 + SYS___LROUNDL_B = 0xAA6 + SYS___LROUNDL_H = 0xAA7 + SYS___LROUND_FIXUP = 0xB30 + SYS___MOSERVICES = 0xD3D + SYS___MUST_STAY_CLEAN = 0xB7C + SYS___NANF_B = 0xAAB + SYS___NANL_B = 0xAAD + SYS___NAN_B = 0xAA9 + SYS___NEARBYINTF_B = 0xAB2 + SYS___NEARBYINTF_H = 0xAB3 + SYS___NEARBYINTL_B = 0xAB5 + SYS___NEARBYINTL_H = 0xAB6 + SYS___NEARBYINT_B = 0xAAF + SYS___NEARBYINT_H = 0xAB0 + SYS___NEXTAFTERF_B = 0xAB8 + SYS___NEXTAFTERF_H = 0xAB9 + SYS___NEXTAFTERL_B = 0xABB + SYS___NEXTAFTERL_H = 0xABC + SYS___NEXTTOWARDF_B = 0xAC1 + SYS___NEXTTOWARDF_H = 0xAC2 + SYS___NEXTTOWARDL_B = 0xAC4 + SYS___NEXTTOWARDL_H = 0xAC5 + SYS___NEXTTOWARD_B = 0xABE + SYS___NEXTTOWARD_H = 0xABF + SYS___O_ENV = 0xB7D + SYS___PASSWD_APPLID = 0xCE3 + SYS___PTOD1 = 0xC9E + SYS___PTOD2 = 0xC9F + SYS___PTOD4 = 0xCA0 + SYS___REGCOMP_STD = 0x0EA + SYS___REMAINDERF_H = 0xAC6 + SYS___REMAINDERL_H = 0xAC7 + SYS___REMQUOD128 = 0xC10 + SYS___REMQUOD32 = 0xC0E + SYS___REMQUOD64 = 0xC0F + SYS___REMQUOF_H = 0xAC9 + SYS___REMQUOL_H = 0xACA + SYS___REMQUO_H = 0xAC8 + SYS___RINTF_B = 0xACC + SYS___RINTL_B = 0xACE + SYS___ROUNDF_B = 0xAD3 + SYS___ROUNDF_H = 0xAD4 + SYS___ROUNDL_B = 0xAD6 + SYS___ROUNDL_H = 0xAD7 + SYS___ROUND_B = 0xAD0 + SYS___ROUND_H = 0xAD1 + SYS___SCALBLNF_B = 0xADC + SYS___SCALBLNF_H = 0xADD + SYS___SCALBLNL_B = 0xADF + SYS___SCALBLNL_H = 0xAE0 + SYS___SCALBLN_B = 0xAD9 + SYS___SCALBLN_H = 0xADA + SYS___SCALBNF_B = 0xAE4 + SYS___SCALBNF_H = 0xAE5 + SYS___SCALBNL_B = 0xAE7 + SYS___SCALBNL_H = 0xAE8 + SYS___SCALBN_B = 0xAE1 + SYS___SCALBN_H = 0xAE2 + SYS___SETENV = 0x0C8 + SYS___SINPID128 = 0xC73 + SYS___SINPID32 = 0xC71 + SYS___SINPID64 = 0xC72 + SYS___SMF_RECORD2 = 0xD48 + SYS___STATIC_REINIT = 0xB3D + SYS___TGAMMAF_H_C99 = 0xB79 + SYS___TGAMMAL_H = 0xAE9 + SYS___TGAMMA_H_C99 = 0xB78 + SYS___TOCSNAME2 = 0xC9A + SYS_CEIL = 0x01F + SYS_CHAUDIT = 0x1E0 + SYS_EXP = 0x01A + SYS_FCHAUDIT = 0x1E1 + SYS_FREXP = 0x01D + SYS_GETGROUPSBYNAME = 0x1E2 + SYS_GETPWUID = 0x1A0 + SYS_GETUID = 0x1A1 + SYS_ISATTY = 0x1A3 + SYS_KILL = 0x1A4 + SYS_LDEXP = 0x01E + SYS_LINK = 0x1A5 + SYS_LOG10 = 0x01C + SYS_LSEEK = 0x1A6 + SYS_LSTAT = 0x1A7 + SYS_MKDIR = 0x1A8 + SYS_MKFIFO = 0x1A9 + SYS_MKNOD = 0x1AA + SYS_MODF = 0x01B + SYS_MOUNT = 0x1AB + SYS_OPEN = 0x1AC + SYS_OPENDIR = 0x1AD + SYS_PATHCONF = 0x1AE + SYS_PAUSE = 0x1AF + SYS_PIPE = 0x1B0 + SYS_PTHREAD_ATTR_DESTROY = 0x1E7 + SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB + SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 + SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED + SYS_PTHREAD_ATTR_INIT = 0x1E6 + SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA + SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 + SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC + SYS_PTHREAD_CANCEL = 0x1EE + SYS_PTHREAD_CLEANUP_POP = 0x1F0 + SYS_PTHREAD_CLEANUP_PUSH = 0x1EF + SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 + SYS_PTHREAD_CONDATTR_INIT = 0x1F1 + SYS_PTHREAD_COND_BROADCAST = 0x1F6 + SYS_PTHREAD_COND_DESTROY = 0x1F4 + SYS_PTHREAD_COND_INIT = 0x1F3 + SYS_PTHREAD_COND_SIGNAL = 0x1F5 + SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 + SYS_PTHREAD_COND_WAIT = 0x1F7 + SYS_PTHREAD_CREATE = 0x1F9 + SYS_PTHREAD_DETACH = 0x1FA + SYS_PTHREAD_EQUAL = 0x1FB + SYS_PTHREAD_EXIT = 0x1E4 + SYS_PTHREAD_GETSPECIFIC = 0x1FC + SYS_PTHREAD_JOIN = 0x1FD + SYS_PTHREAD_KEY_CREATE = 0x1FE + SYS_PTHREAD_KILL = 0x1E5 + SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF + SYS_READ = 0x1B2 + SYS_READDIR = 0x1B3 + SYS_READLINK = 0x1B4 + SYS_REWINDDIR = 0x1B5 + SYS_RMDIR = 0x1B6 + SYS_SETEGID = 0x1B7 + SYS_SETEUID = 0x1B8 + SYS_SETGID = 0x1B9 + SYS_SETPGID = 0x1BA + SYS_SETSID = 0x1BB + SYS_SETUID = 0x1BC + SYS_SIGACTION = 0x1BD + SYS_SIGADDSET = 0x1BE + SYS_SIGDELSET = 0x1BF + SYS_SIGEMPTYSET = 0x1C0 + SYS_SIGFILLSET = 0x1C1 + SYS_SIGISMEMBER = 0x1C2 + SYS_SIGLONGJMP = 0x1C3 + SYS_SIGPENDING = 0x1C4 + SYS_SIGPROCMASK = 0x1C5 + SYS_SIGSETJMP = 0x1C6 + SYS_SIGSUSPEND = 0x1C7 + SYS_SIGWAIT = 0x1E3 + SYS_SLEEP = 0x1C8 + SYS_STAT = 0x1C9 + SYS_SYMLINK = 0x1CB + SYS_SYSCONF = 0x1CC + SYS_TCDRAIN = 0x1CD + SYS_TCFLOW = 0x1CE + SYS_TCFLUSH = 0x1CF + SYS_TCGETATTR = 0x1D0 + SYS_TCGETPGRP = 0x1D1 + SYS_TCSENDBREAK = 0x1D2 + SYS_TCSETATTR = 0x1D3 + SYS_TCSETPGRP = 0x1D4 + SYS_TIMES = 0x1D5 + SYS_TTYNAME = 0x1D6 + SYS_TZSET = 0x1D7 + SYS_UMASK = 0x1D8 + SYS_UMOUNT = 0x1D9 + SYS_UNAME = 0x1DA + SYS_UNLINK = 0x1DB + SYS_UTIME = 0x1DC + SYS_WAIT = 0x1DD + SYS_WAITPID = 0x1DE + SYS_WRITE = 0x1DF + SYS_W_GETPSENT = 0x1B1 + SYS_W_IOCTL = 0x1A2 + SYS_W_STATFS = 0x1CA + SYS_A64L = 0x2EF + SYS_BCMP = 0x2B9 + SYS_BCOPY = 0x2BA + SYS_BZERO = 0x2BB + SYS_CATCLOSE = 0x2B6 + SYS_CATGETS = 0x2B7 + SYS_CATOPEN = 0x2B8 + SYS_CRYPT = 0x2AC + SYS_DBM_CLEARERR = 0x2F7 + SYS_DBM_CLOSE = 0x2F8 + SYS_DBM_DELETE = 0x2F9 + SYS_DBM_ERROR = 0x2FA + SYS_DBM_FETCH = 0x2FB + SYS_DBM_FIRSTKEY = 0x2FC + SYS_DBM_NEXTKEY = 0x2FD + SYS_DBM_OPEN = 0x2FE + SYS_DBM_STORE = 0x2FF + SYS_DRAND48 = 0x2B2 + SYS_ENCRYPT = 0x2AD + SYS_ENDUTXENT = 0x2E1 + SYS_ERAND48 = 0x2B3 + SYS_ERF = 0x02C + SYS_ERFC = 0x02D + SYS_FCHDIR = 0x2D9 + SYS_FFS = 0x2BC + SYS_FMTMSG = 0x2E5 + SYS_FSTATVFS = 0x2B4 + SYS_FTIME = 0x2F5 + SYS_GAMMA = 0x02E + SYS_GETDATE = 0x2A6 + SYS_GETPAGESIZE = 0x2D8 + SYS_GETTIMEOFDAY = 0x2F6 + SYS_GETUTXENT = 0x2E0 + SYS_GETUTXID = 0x2E2 + SYS_GETUTXLINE = 0x2E3 + SYS_HCREATE = 0x2C6 + SYS_HDESTROY = 0x2C7 + SYS_HSEARCH = 0x2C8 + SYS_HYPOT = 0x02B + SYS_INDEX = 0x2BD + SYS_INITSTATE = 0x2C2 + SYS_INSQUE = 0x2CF + SYS_ISASCII = 0x2ED + SYS_JRAND48 = 0x2E6 + SYS_L64A = 0x2F0 + SYS_LCONG48 = 0x2EA + SYS_LFIND = 0x2C9 + SYS_LRAND48 = 0x2E7 + SYS_LSEARCH = 0x2CA + SYS_MEMCCPY = 0x2D4 + SYS_MRAND48 = 0x2E8 + SYS_NRAND48 = 0x2E9 + SYS_PCLOSE = 0x2D2 + SYS_POPEN = 0x2D1 + SYS_PUTUTXLINE = 0x2E4 + SYS_RANDOM = 0x2C4 + SYS_REMQUE = 0x2D0 + SYS_RINDEX = 0x2BE + SYS_SEED48 = 0x2EC + SYS_SETKEY = 0x2AE + SYS_SETSTATE = 0x2C3 + SYS_SETUTXENT = 0x2DF + SYS_SRAND48 = 0x2EB + SYS_SRANDOM = 0x2C5 + SYS_STATVFS = 0x2B5 + SYS_STRCASECMP = 0x2BF + SYS_STRDUP = 0x2C0 + SYS_STRNCASECMP = 0x2C1 + SYS_SWAB = 0x2D3 + SYS_TDELETE = 0x2CB + SYS_TFIND = 0x2CC + SYS_TOASCII = 0x2EE + SYS_TSEARCH = 0x2CD + SYS_TWALK = 0x2CE + SYS_UALARM = 0x2F1 + SYS_USLEEP = 0x2F2 + SYS_WAIT3 = 0x2A7 + SYS_WAITID = 0x2A8 + SYS_Y1 = 0x02A + SYS___ATOE = 0x2DB + SYS___ATOE_L = 0x2DC + SYS___CATTRM = 0x2A9 + SYS___CNVBLK = 0x2AF + SYS___CRYTRM = 0x2B0 + SYS___DLGHT = 0x2A1 + SYS___ECRTRM = 0x2B1 + SYS___ETOA = 0x2DD + SYS___ETOA_L = 0x2DE + SYS___GDTRM = 0x2AA + SYS___OCLCK = 0x2DA + SYS___OPARGF = 0x2A2 + SYS___OPERRF = 0x2A5 + SYS___OPINDF = 0x2A4 + SYS___OPOPTF = 0x2A3 + SYS___RNDTRM = 0x2AB + SYS___SRCTRM = 0x2F4 + SYS___TZONE = 0x2A0 + SYS___UTXTRM = 0x2F3 + SYS_ASIN = 0x03E + SYS_ISXDIGIT = 0x03B + SYS_SETLOCAL = 0x03A + SYS_SETLOCALE = 0x03A + SYS_SIN = 0x03F + SYS_TOLOWER = 0x03C + SYS_TOUPPER = 0x03D + SYS_ACCEPT_AND_RECV = 0x4F7 + SYS_ATOL = 0x04E + SYS_CHECKSCH = 0x4BC + SYS_CHECKSCHENV = 0x4BC + SYS_CLEARERR = 0x04C + SYS_CONNECTS = 0x4B5 + SYS_CONNECTSERVER = 0x4B5 + SYS_CONNECTW = 0x4B4 + SYS_CONNECTWORKMGR = 0x4B4 + SYS_CONTINUE = 0x4B3 + SYS_CONTINUEWORKUNIT = 0x4B3 + SYS_COPYSIGN = 0x4C2 + SYS_CREATEWO = 0x4B2 + SYS_CREATEWORKUNIT = 0x4B2 + SYS_DELETEWO = 0x4B9 + SYS_DELETEWORKUNIT = 0x4B9 + SYS_DISCONNE = 0x4B6 + SYS_DISCONNECTSERVER = 0x4B6 + SYS_FEOF = 0x04D + SYS_FERROR = 0x04A + SYS_FINITE = 0x4C8 + SYS_GAMMA_R = 0x4E2 + SYS_JOINWORK = 0x4B7 + SYS_JOINWORKUNIT = 0x4B7 + SYS_LEAVEWOR = 0x4B8 + SYS_LEAVEWORKUNIT = 0x4B8 + SYS_LGAMMA_R = 0x4EB + SYS_MATHERR = 0x4D0 + SYS_PERROR = 0x04F + SYS_QUERYMET = 0x4BA + SYS_QUERYMETRICS = 0x4BA + SYS_QUERYSCH = 0x4BB + SYS_QUERYSCHENV = 0x4BB + SYS_REWIND = 0x04B + SYS_SCALBN = 0x4D4 + SYS_SIGNIFIC = 0x4D5 + SYS_SIGNIFICAND = 0x4D5 + SYS___ACOSH_B = 0x4DA + SYS___ACOS_B = 0x4D9 + SYS___ASINH_B = 0x4BE + SYS___ASIN_B = 0x4DB + SYS___ATAN2_B = 0x4DC + SYS___ATANH_B = 0x4DD + SYS___ATAN_B = 0x4BF + SYS___CBRT_B = 0x4C0 + SYS___CEIL_B = 0x4C1 + SYS___COSH_B = 0x4DE + SYS___COS_B = 0x4C3 + SYS___DGHT = 0x4A8 + SYS___ENVN = 0x4B0 + SYS___ERFC_B = 0x4C5 + SYS___ERF_B = 0x4C4 + SYS___EXPM1_B = 0x4C6 + SYS___EXP_B = 0x4DF + SYS___FABS_B = 0x4C7 + SYS___FLOOR_B = 0x4C9 + SYS___FMOD_B = 0x4E0 + SYS___FP_SETMODE = 0x4F8 + SYS___FREXP_B = 0x4CA + SYS___GAMMA_B = 0x4E1 + SYS___GDRR = 0x4A1 + SYS___HRRNO = 0x4A2 + SYS___HYPOT_B = 0x4E3 + SYS___ILOGB_B = 0x4CB + SYS___ISNAN_B = 0x4CC + SYS___J0_B = 0x4E4 + SYS___J1_B = 0x4E6 + SYS___JN_B = 0x4E8 + SYS___LDEXP_B = 0x4CD + SYS___LGAMMA_B = 0x4EA + SYS___LOG10_B = 0x4ED + SYS___LOG1P_B = 0x4CE + SYS___LOGB_B = 0x4CF + SYS___LOGIN = 0x4F5 + SYS___LOG_B = 0x4EC + SYS___MLOCKALL = 0x4B1 + SYS___MODF_B = 0x4D1 + SYS___NEXTAFTER_B = 0x4D2 + SYS___OPENDIR2 = 0x4F3 + SYS___OPEN_STAT = 0x4F6 + SYS___OPND = 0x4A5 + SYS___OPPT = 0x4A6 + SYS___OPRG = 0x4A3 + SYS___OPRR = 0x4A4 + SYS___PID_AFFINITY = 0x4BD + SYS___POW_B = 0x4EE + SYS___READDIR2 = 0x4F4 + SYS___REMAINDER_B = 0x4EF + SYS___RINT_B = 0x4D3 + SYS___SCALB_B = 0x4F0 + SYS___SIGACTIONSET = 0x4FB + SYS___SIGGM = 0x4A7 + SYS___SINH_B = 0x4F1 + SYS___SIN_B = 0x4D6 + SYS___SQRT_B = 0x4F2 + SYS___TANH_B = 0x4D8 + SYS___TAN_B = 0x4D7 + SYS___TRRNO = 0x4AF + SYS___TZNE = 0x4A9 + SYS___TZZN = 0x4AA + SYS___UCREATE = 0x4FC + SYS___UFREE = 0x4FE + SYS___UHEAPREPORT = 0x4FF + SYS___UMALLOC = 0x4FD + SYS___Y0_B = 0x4E5 + SYS___Y1_B = 0x4E7 + SYS___YN_B = 0x4E9 + SYS_ABORT = 0x05C + SYS_ASCTIME_R = 0x5E0 + SYS_ATEXIT = 0x05D + SYS_CONNECTE = 0x5AE + SYS_CONNECTEXPORTIMPORT = 0x5AE + SYS_CTIME_R = 0x5E1 + SYS_DN_COMP = 0x5DF + SYS_DN_EXPAND = 0x5DD + SYS_DN_SKIPNAME = 0x5DE + SYS_EXIT = 0x05A + SYS_EXPORTWO = 0x5A1 + SYS_EXPORTWORKUNIT = 0x5A1 + SYS_EXTRACTW = 0x5A5 + SYS_EXTRACTWORKUNIT = 0x5A5 + SYS_FSEEKO = 0x5C9 + SYS_FTELLO = 0x5C8 + SYS_GETGRGID_R = 0x5E7 + SYS_GETGRNAM_R = 0x5E8 + SYS_GETLOGIN_R = 0x5E9 + SYS_GETPWNAM_R = 0x5EA + SYS_GETPWUID_R = 0x5EB + SYS_GMTIME_R = 0x5E2 + SYS_IMPORTWO = 0x5A3 + SYS_IMPORTWORKUNIT = 0x5A3 + SYS_INET_NTOP = 0x5D3 + SYS_INET_PTON = 0x5D4 + SYS_LLABS = 0x5CE + SYS_LLDIV = 0x5CB + SYS_LOCALTIME_R = 0x5E3 + SYS_PTHREAD_ATFORK = 0x5ED + SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB + SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE + SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 + SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF + SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC + SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 + SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA + SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 + SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 + SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 + SYS_PTHREAD_DETACH_U98 = 0x5FD + SYS_PTHREAD_GETCONCURRENCY = 0x5F4 + SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE + SYS_PTHREAD_KEY_DELETE = 0x5F5 + SYS_PTHREAD_SETCANCELSTATE = 0x5FF + SYS_PTHREAD_SETCONCURRENCY = 0x5F6 + SYS_PTHREAD_SIGMASK = 0x5F7 + SYS_QUERYENC = 0x5AD + SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD + SYS_RAISE = 0x05E + SYS_RAND_R = 0x5E4 + SYS_READDIR_R = 0x5E6 + SYS_REALLOC = 0x05B + SYS_RES_INIT = 0x5D8 + SYS_RES_MKQUERY = 0x5D7 + SYS_RES_QUERY = 0x5D9 + SYS_RES_QUERYDOMAIN = 0x5DC + SYS_RES_SEARCH = 0x5DA + SYS_RES_SEND = 0x5DB + SYS_SETJMP = 0x05F + SYS_SIGQUEUE = 0x5A9 + SYS_STRTOK_R = 0x5E5 + SYS_STRTOLL = 0x5B0 + SYS_STRTOULL = 0x5B1 + SYS_TTYNAME_R = 0x5EC + SYS_UNDOEXPO = 0x5A2 + SYS_UNDOEXPORTWORKUNIT = 0x5A2 + SYS_UNDOIMPO = 0x5A4 + SYS_UNDOIMPORTWORKUNIT = 0x5A4 + SYS_WCSTOLL = 0x5CC + SYS_WCSTOULL = 0x5CD + SYS___ABORT = 0x05C + SYS___CONSOLE2 = 0x5D2 + SYS___CPL = 0x5A6 + SYS___DISCARDDATA = 0x5F8 + SYS___DSA_PREV = 0x5B2 + SYS___EP_FIND = 0x5B3 + SYS___FP_SWAPMODE = 0x5AF + SYS___GETUSERID = 0x5AB + SYS___GET_CPUID = 0x5B9 + SYS___GET_SYSTEM_SETTINGS = 0x5BA + SYS___IPDOMAINNAME = 0x5AC + SYS___MAP_INIT = 0x5A7 + SYS___MAP_SERVICE = 0x5A8 + SYS___MOUNT = 0x5AA + SYS___MSGRCV_TIMED = 0x5B7 + SYS___RES = 0x5D6 + SYS___SEMOP_TIMED = 0x5B8 + SYS___SERVER_THREADS_QUERY = 0x5B4 + SYS_FPRINTF = 0x06D + SYS_FSCANF = 0x06A + SYS_PRINTF = 0x06F + SYS_SETBUF = 0x06B + SYS_SETVBUF = 0x06C + SYS_SSCANF = 0x06E + SYS___CATGETS_A = 0x6C0 + SYS___CHAUDIT_A = 0x6F4 + SYS___CHMOD_A = 0x6E8 + SYS___COLLATE_INIT_A = 0x6AC + SYS___CREAT_A = 0x6F6 + SYS___CTYPE_INIT_A = 0x6AF + SYS___DLLLOAD_A = 0x6DF + SYS___DLLQUERYFN_A = 0x6E0 + SYS___DLLQUERYVAR_A = 0x6E1 + SYS___E2A_L = 0x6E3 + SYS___EXECLE_A = 0x6A0 + SYS___EXECLP_A = 0x6A4 + SYS___EXECVE_A = 0x6C1 + SYS___EXECVP_A = 0x6C2 + SYS___EXECV_A = 0x6B1 + SYS___FPRINTF_A = 0x6FA + SYS___GETADDRINFO_A = 0x6BF + SYS___GETNAMEINFO_A = 0x6C4 + SYS___GET_WCTYPE_STD_A = 0x6AE + SYS___ICONV_OPEN_A = 0x6DE + SYS___IF_INDEXTONAME_A = 0x6DC + SYS___IF_NAMETOINDEX_A = 0x6DB + SYS___ISWCTYPE_A = 0x6B0 + SYS___IS_WCTYPE_STD_A = 0x6B2 + SYS___LOCALECONV_A = 0x6B8 + SYS___LOCALECONV_STD_A = 0x6B9 + SYS___LOCALE_INIT_A = 0x6B7 + SYS___LSTAT_A = 0x6EE + SYS___LSTAT_O_A = 0x6EF + SYS___MKDIR_A = 0x6E9 + SYS___MKFIFO_A = 0x6EC + SYS___MKNOD_A = 0x6F0 + SYS___MONETARY_INIT_A = 0x6BC + SYS___MOUNT_A = 0x6F1 + SYS___NL_CSINFO_A = 0x6D6 + SYS___NL_LANGINFO_A = 0x6BA + SYS___NL_LNAGINFO_STD_A = 0x6BB + SYS___NL_MONINFO_A = 0x6D7 + SYS___NL_NUMINFO_A = 0x6D8 + SYS___NL_RESPINFO_A = 0x6D9 + SYS___NL_TIMINFO_A = 0x6DA + SYS___NUMERIC_INIT_A = 0x6C6 + SYS___OPEN_A = 0x6F7 + SYS___PRINTF_A = 0x6DD + SYS___RESP_INIT_A = 0x6C7 + SYS___RPMATCH_A = 0x6C8 + SYS___RPMATCH_C_A = 0x6C9 + SYS___RPMATCH_STD_A = 0x6CA + SYS___SETLOCALE_A = 0x6F9 + SYS___SPAWNP_A = 0x6C5 + SYS___SPAWN_A = 0x6C3 + SYS___SPRINTF_A = 0x6FB + SYS___STAT_A = 0x6EA + SYS___STAT_O_A = 0x6EB + SYS___STRCOLL_STD_A = 0x6A1 + SYS___STRFMON_A = 0x6BD + SYS___STRFMON_STD_A = 0x6BE + SYS___STRFTIME_A = 0x6CC + SYS___STRFTIME_STD_A = 0x6CD + SYS___STRPTIME_A = 0x6CE + SYS___STRPTIME_STD_A = 0x6CF + SYS___STRXFRM_A = 0x6A2 + SYS___STRXFRM_C_A = 0x6A3 + SYS___STRXFRM_STD_A = 0x6A5 + SYS___SYNTAX_INIT_A = 0x6D4 + SYS___TIME_INIT_A = 0x6CB + SYS___TOD_INIT_A = 0x6D5 + SYS___TOWLOWER_A = 0x6B3 + SYS___TOWLOWER_STD_A = 0x6B4 + SYS___TOWUPPER_A = 0x6B5 + SYS___TOWUPPER_STD_A = 0x6B6 + SYS___UMOUNT_A = 0x6F2 + SYS___VFPRINTF_A = 0x6FC + SYS___VPRINTF_A = 0x6FD + SYS___VSPRINTF_A = 0x6FE + SYS___VSWPRINTF_A = 0x6FF + SYS___WCSCOLL_A = 0x6A6 + SYS___WCSCOLL_C_A = 0x6A7 + SYS___WCSCOLL_STD_A = 0x6A8 + SYS___WCSFTIME_A = 0x6D0 + SYS___WCSFTIME_STD_A = 0x6D1 + SYS___WCSXFRM_A = 0x6A9 + SYS___WCSXFRM_C_A = 0x6AA + SYS___WCSXFRM_STD_A = 0x6AB + SYS___WCTYPE_A = 0x6AD + SYS___W_GETMNTENT_A = 0x6F5 + SYS_____CCSIDTYPE_A = 0x6E6 + SYS_____CHATTR_A = 0x6E2 + SYS_____CSNAMETYPE_A = 0x6E7 + SYS_____OPEN_STAT_A = 0x6ED + SYS_____SPAWN2_A = 0x6D2 + SYS_____SPAWNP2_A = 0x6D3 + SYS_____TOCCSID_A = 0x6E4 + SYS_____TOCSNAME_A = 0x6E5 + SYS_ACL_FREE = 0x7FF + SYS_ACL_INIT = 0x7FE + SYS_FWIDE = 0x7DF + SYS_FWPRINTF = 0x7D1 + SYS_FWRITE = 0x07E + SYS_FWSCANF = 0x7D5 + SYS_GETCHAR = 0x07B + SYS_GETS = 0x07C + SYS_M_CREATE_LAYOUT = 0x7C9 + SYS_M_DESTROY_LAYOUT = 0x7CA + SYS_M_GETVALUES_LAYOUT = 0x7CB + SYS_M_SETVALUES_LAYOUT = 0x7CC + SYS_M_TRANSFORM_LAYOUT = 0x7CD + SYS_M_WTRANSFORM_LAYOUT = 0x7CE + SYS_PREAD = 0x7C7 + SYS_PUTC = 0x07D + SYS_PUTCHAR = 0x07A + SYS_PUTS = 0x07F + SYS_PWRITE = 0x7C8 + SYS_TOWCTRAN = 0x7D8 + SYS_TOWCTRANS = 0x7D8 + SYS_UNATEXIT = 0x7B5 + SYS_VFWPRINT = 0x7D3 + SYS_VFWPRINTF = 0x7D3 + SYS_VWPRINTF = 0x7D4 + SYS_WCTRANS = 0x7D7 + SYS_WPRINTF = 0x7D2 + SYS_WSCANF = 0x7D6 + SYS___ASCTIME_R_A = 0x7A1 + SYS___BASENAME_A = 0x7DC + SYS___BTOWC_A = 0x7E4 + SYS___CDUMP_A = 0x7B7 + SYS___CEE3DMP_A = 0x7B6 + SYS___CEILF_H = 0x7F4 + SYS___CEILL_H = 0x7F5 + SYS___CEIL_H = 0x7EA + SYS___CRYPT_A = 0x7BE + SYS___CSNAP_A = 0x7B8 + SYS___CTEST_A = 0x7B9 + SYS___CTIME_R_A = 0x7A2 + SYS___CTRACE_A = 0x7BA + SYS___DBM_OPEN_A = 0x7E6 + SYS___DIRNAME_A = 0x7DD + SYS___FABSF_H = 0x7FA + SYS___FABSL_H = 0x7FB + SYS___FABS_H = 0x7ED + SYS___FGETWC_A = 0x7AA + SYS___FGETWS_A = 0x7AD + SYS___FLOORF_H = 0x7F6 + SYS___FLOORL_H = 0x7F7 + SYS___FLOOR_H = 0x7EB + SYS___FPUTWC_A = 0x7A5 + SYS___FPUTWS_A = 0x7A8 + SYS___GETTIMEOFDAY_A = 0x7AE + SYS___GETWCHAR_A = 0x7AC + SYS___GETWC_A = 0x7AB + SYS___GLOB_A = 0x7DE + SYS___GMTIME_A = 0x7AF + SYS___GMTIME_R_A = 0x7B0 + SYS___INET_PTON_A = 0x7BC + SYS___J0_H = 0x7EE + SYS___J1_H = 0x7EF + SYS___JN_H = 0x7F0 + SYS___LOCALTIME_A = 0x7B1 + SYS___LOCALTIME_R_A = 0x7B2 + SYS___MALLOC24 = 0x7FC + SYS___MALLOC31 = 0x7FD + SYS___MKTIME_A = 0x7B3 + SYS___MODFF_H = 0x7F8 + SYS___MODFL_H = 0x7F9 + SYS___MODF_H = 0x7EC + SYS___OPENDIR_A = 0x7C2 + SYS___OSNAME = 0x7E0 + SYS___PUTWCHAR_A = 0x7A7 + SYS___PUTWC_A = 0x7A6 + SYS___READDIR_A = 0x7C3 + SYS___STRTOLL_A = 0x7A3 + SYS___STRTOULL_A = 0x7A4 + SYS___SYSLOG_A = 0x7BD + SYS___TZZNA = 0x7B4 + SYS___UNGETWC_A = 0x7A9 + SYS___UTIME_A = 0x7A0 + SYS___VFPRINTF2_A = 0x7E7 + SYS___VPRINTF2_A = 0x7E8 + SYS___VSPRINTF2_A = 0x7E9 + SYS___VSWPRNTF2_A = 0x7BB + SYS___WCSTOD_A = 0x7D9 + SYS___WCSTOL_A = 0x7DA + SYS___WCSTOUL_A = 0x7DB + SYS___WCTOB_A = 0x7E5 + SYS___Y0_H = 0x7F1 + SYS___Y1_H = 0x7F2 + SYS___YN_H = 0x7F3 + SYS_____OPENDIR2_A = 0x7BF + SYS_____OSNAME_A = 0x7E1 + SYS_____READDIR2_A = 0x7C0 + SYS_DLCLOSE = 0x8DF + SYS_DLERROR = 0x8E0 + SYS_DLOPEN = 0x8DD + SYS_DLSYM = 0x8DE + SYS_FLOCKFILE = 0x8D3 + SYS_FTRYLOCKFILE = 0x8D4 + SYS_FUNLOCKFILE = 0x8D5 + SYS_GETCHAR_UNLOCKED = 0x8D7 + SYS_GETC_UNLOCKED = 0x8D6 + SYS_PUTCHAR_UNLOCKED = 0x8D9 + SYS_PUTC_UNLOCKED = 0x8D8 + SYS_SNPRINTF = 0x8DA + SYS_VSNPRINTF = 0x8DB + SYS_WCSCSPN = 0x08B + SYS_WCSLEN = 0x08C + SYS_WCSNCAT = 0x08D + SYS_WCSNCMP = 0x08A + SYS_WCSNCPY = 0x08F + SYS_WCSSPN = 0x08E + SYS___ABSF_H = 0x8E7 + SYS___ABSL_H = 0x8E8 + SYS___ABS_H = 0x8E6 + SYS___ACOSF_H = 0x8EA + SYS___ACOSH_H = 0x8EC + SYS___ACOSL_H = 0x8EB + SYS___ACOS_H = 0x8E9 + SYS___ASINF_H = 0x8EE + SYS___ASINH_H = 0x8F0 + SYS___ASINL_H = 0x8EF + SYS___ASIN_H = 0x8ED + SYS___ATAN2F_H = 0x8F8 + SYS___ATAN2L_H = 0x8F9 + SYS___ATAN2_H = 0x8F7 + SYS___ATANF_H = 0x8F2 + SYS___ATANHF_H = 0x8F5 + SYS___ATANHL_H = 0x8F6 + SYS___ATANH_H = 0x8F4 + SYS___ATANL_H = 0x8F3 + SYS___ATAN_H = 0x8F1 + SYS___CBRT_H = 0x8FA + SYS___COPYSIGNF_H = 0x8FB + SYS___COPYSIGNL_H = 0x8FC + SYS___COSF_H = 0x8FE + SYS___COSL_H = 0x8FF + SYS___COS_H = 0x8FD + SYS___DLERROR_A = 0x8D2 + SYS___DLOPEN_A = 0x8D0 + SYS___DLSYM_A = 0x8D1 + SYS___GETUTXENT_A = 0x8C6 + SYS___GETUTXID_A = 0x8C7 + SYS___GETUTXLINE_A = 0x8C8 + SYS___ITOA = 0x8AA + SYS___ITOA_A = 0x8B0 + SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 + SYS___LE_MSG_ADD_INSERT = 0x8A6 + SYS___LE_MSG_GET = 0x8A7 + SYS___LE_MSG_GET_AND_WRITE = 0x8A8 + SYS___LE_MSG_WRITE = 0x8A9 + SYS___LLTOA = 0x8AE + SYS___LLTOA_A = 0x8B4 + SYS___LTOA = 0x8AC + SYS___LTOA_A = 0x8B2 + SYS___PUTCHAR_UNLOCKED_A = 0x8CC + SYS___PUTC_UNLOCKED_A = 0x8CB + SYS___PUTUTXLINE_A = 0x8C9 + SYS___RESET_EXCEPTION_HANDLER = 0x8E3 + SYS___REXEC_A = 0x8C4 + SYS___REXEC_AF_A = 0x8C5 + SYS___SET_EXCEPTION_HANDLER = 0x8E2 + SYS___SNPRINTF_A = 0x8CD + SYS___SUPERKILL = 0x8A4 + SYS___TCGETATTR_A = 0x8A1 + SYS___TCSETATTR_A = 0x8A2 + SYS___ULLTOA = 0x8AF + SYS___ULLTOA_A = 0x8B5 + SYS___ULTOA = 0x8AD + SYS___ULTOA_A = 0x8B3 + SYS___UTOA = 0x8AB + SYS___UTOA_A = 0x8B1 + SYS___VHM_EVENT = 0x8E4 + SYS___VSNPRINTF_A = 0x8CE + SYS_____GETENV_A = 0x8C3 + SYS_____UTMPXNAME_A = 0x8CA + SYS_CACOSH = 0x9A0 + SYS_CACOSHF = 0x9A3 + SYS_CACOSHL = 0x9A6 + SYS_CARG = 0x9A9 + SYS_CARGF = 0x9AC + SYS_CARGL = 0x9AF + SYS_CASIN = 0x9B2 + SYS_CASINF = 0x9B5 + SYS_CASINH = 0x9BB + SYS_CASINHF = 0x9BE + SYS_CASINHL = 0x9C1 + SYS_CASINL = 0x9B8 + SYS_CATAN = 0x9C4 + SYS_CATANF = 0x9C7 + SYS_CATANH = 0x9CD + SYS_CATANHF = 0x9D0 + SYS_CATANHL = 0x9D3 + SYS_CATANL = 0x9CA + SYS_CCOS = 0x9D6 + SYS_CCOSF = 0x9D9 + SYS_CCOSH = 0x9DF + SYS_CCOSHF = 0x9E2 + SYS_CCOSHL = 0x9E5 + SYS_CCOSL = 0x9DC + SYS_CEXP = 0x9E8 + SYS_CEXPF = 0x9EB + SYS_CEXPL = 0x9EE + SYS_CIMAG = 0x9F1 + SYS_CIMAGF = 0x9F4 + SYS_CIMAGL = 0x9F7 + SYS_CLOGF = 0x9FD + SYS_MEMCHR = 0x09B + SYS_MEMCMP = 0x09A + SYS_STRCOLL = 0x09C + SYS_STRNCMP = 0x09D + SYS_STRRCHR = 0x09F + SYS_STRXFRM = 0x09E + SYS___CACOSHF_B = 0x9A4 + SYS___CACOSHF_H = 0x9A5 + SYS___CACOSHL_B = 0x9A7 + SYS___CACOSHL_H = 0x9A8 + SYS___CACOSH_B = 0x9A1 + SYS___CACOSH_H = 0x9A2 + SYS___CARGF_B = 0x9AD + SYS___CARGF_H = 0x9AE + SYS___CARGL_B = 0x9B0 + SYS___CARGL_H = 0x9B1 + SYS___CARG_B = 0x9AA + SYS___CARG_H = 0x9AB + SYS___CASINF_B = 0x9B6 + SYS___CASINF_H = 0x9B7 + SYS___CASINHF_B = 0x9BF + SYS___CASINHF_H = 0x9C0 + SYS___CASINHL_B = 0x9C2 + SYS___CASINHL_H = 0x9C3 + SYS___CASINH_B = 0x9BC + SYS___CASINH_H = 0x9BD + SYS___CASINL_B = 0x9B9 + SYS___CASINL_H = 0x9BA + SYS___CASIN_B = 0x9B3 + SYS___CASIN_H = 0x9B4 + SYS___CATANF_B = 0x9C8 + SYS___CATANF_H = 0x9C9 + SYS___CATANHF_B = 0x9D1 + SYS___CATANHF_H = 0x9D2 + SYS___CATANHL_B = 0x9D4 + SYS___CATANHL_H = 0x9D5 + SYS___CATANH_B = 0x9CE + SYS___CATANH_H = 0x9CF + SYS___CATANL_B = 0x9CB + SYS___CATANL_H = 0x9CC + SYS___CATAN_B = 0x9C5 + SYS___CATAN_H = 0x9C6 + SYS___CCOSF_B = 0x9DA + SYS___CCOSF_H = 0x9DB + SYS___CCOSHF_B = 0x9E3 + SYS___CCOSHF_H = 0x9E4 + SYS___CCOSHL_B = 0x9E6 + SYS___CCOSHL_H = 0x9E7 + SYS___CCOSH_B = 0x9E0 + SYS___CCOSH_H = 0x9E1 + SYS___CCOSL_B = 0x9DD + SYS___CCOSL_H = 0x9DE + SYS___CCOS_B = 0x9D7 + SYS___CCOS_H = 0x9D8 + SYS___CEXPF_B = 0x9EC + SYS___CEXPF_H = 0x9ED + SYS___CEXPL_B = 0x9EF + SYS___CEXPL_H = 0x9F0 + SYS___CEXP_B = 0x9E9 + SYS___CEXP_H = 0x9EA + SYS___CIMAGF_B = 0x9F5 + SYS___CIMAGF_H = 0x9F6 + SYS___CIMAGL_B = 0x9F8 + SYS___CIMAGL_H = 0x9F9 + SYS___CIMAG_B = 0x9F2 + SYS___CIMAG_H = 0x9F3 + SYS___CLOG = 0x9FA + SYS___CLOGF_B = 0x9FE + SYS___CLOGF_H = 0x9FF + SYS___CLOG_B = 0x9FB + SYS___CLOG_H = 0x9FC + SYS_ISWCTYPE = 0x10C + SYS_ISWXDIGI = 0x10A + SYS_ISWXDIGIT = 0x10A + SYS_MBSINIT = 0x10F + SYS_TOWLOWER = 0x10D + SYS_TOWUPPER = 0x10E + SYS_WCTYPE = 0x10B + SYS_WCSSTR = 0x11B + SYS___RPMTCH = 0x11A + SYS_WCSTOD = 0x12E + SYS_WCSTOK = 0x12C + SYS_WCSTOL = 0x12D + SYS_WCSTOUL = 0x12F + SYS_FGETWC = 0x13C + SYS_FGETWS = 0x13D + SYS_FPUTWC = 0x13E + SYS_FPUTWS = 0x13F + SYS_REGERROR = 0x13B + SYS_REGFREE = 0x13A + SYS_COLLEQUIV = 0x14F + SYS_COLLTOSTR = 0x14E + SYS_ISMCCOLLEL = 0x14C + SYS_STRTOCOLL = 0x14D + SYS_DLLFREE = 0x16F + SYS_DLLQUERYFN = 0x16D + SYS_DLLQUERYVAR = 0x16E + SYS_GETMCCOLL = 0x16A + SYS_GETWMCCOLL = 0x16B + SYS___ERR2AD = 0x16C + SYS_CFSETOSPEED = 0x17A + SYS_CHDIR = 0x17B + SYS_CHMOD = 0x17C + SYS_CHOWN = 0x17D + SYS_CLOSE = 0x17E + SYS_CLOSEDIR = 0x17F + SYS_LOG = 0x017 + SYS_COSH = 0x018 + SYS_FCHMOD = 0x18A + SYS_FCHOWN = 0x18B + SYS_FCNTL = 0x18C + SYS_FILENO = 0x18D + SYS_FORK = 0x18E + SYS_FPATHCONF = 0x18F + SYS_GETLOGIN = 0x19A + SYS_GETPGRP = 0x19C + SYS_GETPID = 0x19D + SYS_GETPPID = 0x19E + SYS_GETPWNAM = 0x19F + SYS_TANH = 0x019 + SYS_W_GETMNTENT = 0x19B + SYS_POW = 0x020 + SYS_PTHREAD_SELF = 0x20A + SYS_PTHREAD_SETINTR = 0x20B + SYS_PTHREAD_SETINTRTYPE = 0x20C + SYS_PTHREAD_SETSPECIFIC = 0x20D + SYS_PTHREAD_TESTINTR = 0x20E + SYS_PTHREAD_YIELD = 0x20F + SYS_SQRT = 0x021 + SYS_FLOOR = 0x022 + SYS_J1 = 0x023 + SYS_WCSPBRK = 0x23F + SYS_BSEARCH = 0x24C + SYS_FABS = 0x024 + SYS_GETENV = 0x24A + SYS_LDIV = 0x24D + SYS_SYSTEM = 0x24B + SYS_FMOD = 0x025 + SYS___RETHROW = 0x25F + SYS___THROW = 0x25E + SYS_J0 = 0x026 + SYS_PUTENV = 0x26A + SYS___GETENV = 0x26F + SYS_SEMCTL = 0x27A + SYS_SEMGET = 0x27B + SYS_SEMOP = 0x27C + SYS_SHMAT = 0x27D + SYS_SHMCTL = 0x27E + SYS_SHMDT = 0x27F + SYS_YN = 0x027 + SYS_JN = 0x028 + SYS_SIGALTSTACK = 0x28A + SYS_SIGHOLD = 0x28B + SYS_SIGIGNORE = 0x28C + SYS_SIGINTERRUPT = 0x28D + SYS_SIGPAUSE = 0x28E + SYS_SIGRELSE = 0x28F + SYS_GETOPT = 0x29A + SYS_GETSUBOPT = 0x29D + SYS_LCHOWN = 0x29B + SYS_SETPGRP = 0x29E + SYS_TRUNCATE = 0x29C + SYS_Y0 = 0x029 + SYS___GDERR = 0x29F + SYS_ISALPHA = 0x030 + SYS_VFORK = 0x30F + SYS__LONGJMP = 0x30D + SYS__SETJMP = 0x30E + SYS_GLOB = 0x31A + SYS_GLOBFREE = 0x31B + SYS_ISALNUM = 0x031 + SYS_PUTW = 0x31C + SYS_SEEKDIR = 0x31D + SYS_TELLDIR = 0x31E + SYS_TEMPNAM = 0x31F + SYS_GETTIMEOFDAY_R = 0x32E + SYS_ISLOWER = 0x032 + SYS_LGAMMA = 0x32C + SYS_REMAINDER = 0x32A + SYS_SCALB = 0x32B + SYS_SYNC = 0x32F + SYS_TTYSLOT = 0x32D + SYS_ENDPROTOENT = 0x33A + SYS_ENDSERVENT = 0x33B + SYS_GETHOSTBYADDR = 0x33D + SYS_GETHOSTBYADDR_R = 0x33C + SYS_GETHOSTBYNAME = 0x33F + SYS_GETHOSTBYNAME_R = 0x33E + SYS_ISCNTRL = 0x033 + SYS_GETSERVBYNAME = 0x34A + SYS_GETSERVBYPORT = 0x34B + SYS_GETSERVENT = 0x34C + SYS_GETSOCKNAME = 0x34D + SYS_GETSOCKOPT = 0x34E + SYS_INET_ADDR = 0x34F + SYS_ISDIGIT = 0x034 + SYS_ISGRAPH = 0x035 + SYS_SELECT = 0x35B + SYS_SELECTEX = 0x35C + SYS_SEND = 0x35D + SYS_SENDTO = 0x35F + SYS_CHROOT = 0x36A + SYS_ISNAN = 0x36D + SYS_ISUPPER = 0x036 + SYS_ULIMIT = 0x36C + SYS_UTIMES = 0x36E + SYS_W_STATVFS = 0x36B + SYS___H_ERRNO = 0x36F + SYS_GRANTPT = 0x37A + SYS_ISPRINT = 0x037 + SYS_TCGETSID = 0x37C + SYS_UNLOCKPT = 0x37B + SYS___TCGETCP = 0x37D + SYS___TCSETCP = 0x37E + SYS___TCSETTABLES = 0x37F + SYS_ISPUNCT = 0x038 + SYS_NLIST = 0x38C + SYS___IPDBCS = 0x38D + SYS___IPDSPX = 0x38E + SYS___IPMSGC = 0x38F + SYS___STHOSTENT = 0x38B + SYS___STSERVENT = 0x38A + SYS_ISSPACE = 0x039 + SYS_COS = 0x040 + SYS_T_ALLOC = 0x40A + SYS_T_BIND = 0x40B + SYS_T_CLOSE = 0x40C + SYS_T_CONNECT = 0x40D + SYS_T_ERROR = 0x40E + SYS_T_FREE = 0x40F + SYS_TAN = 0x041 + SYS_T_RCVREL = 0x41A + SYS_T_RCVUDATA = 0x41B + SYS_T_RCVUDERR = 0x41C + SYS_T_SND = 0x41D + SYS_T_SNDDIS = 0x41E + SYS_T_SNDREL = 0x41F + SYS_GETPMSG = 0x42A + SYS_ISASTREAM = 0x42B + SYS_PUTMSG = 0x42C + SYS_PUTPMSG = 0x42D + SYS_SINH = 0x042 + SYS___ISPOSIXON = 0x42E + SYS___OPENMVSREL = 0x42F + SYS_ACOS = 0x043 + SYS_ATAN = 0x044 + SYS_ATAN2 = 0x045 + SYS_FTELL = 0x046 + SYS_FGETPOS = 0x047 + SYS_SOCK_DEBUG = 0x47A + SYS_SOCK_DO_TESTSTOR = 0x47D + SYS_TAKESOCKET = 0x47E + SYS___SERVER_INIT = 0x47F + SYS_FSEEK = 0x048 + SYS___IPHOST = 0x48B + SYS___IPNODE = 0x48C + SYS___SERVER_CLASSIFY_CREATE = 0x48D + SYS___SERVER_CLASSIFY_DESTROY = 0x48E + SYS___SERVER_CLASSIFY_RESET = 0x48F + SYS___SMF_RECORD = 0x48A + SYS_FSETPOS = 0x049 + SYS___FNWSA = 0x49B + SYS___SPAWN2 = 0x49D + SYS___SPAWNP2 = 0x49E + SYS_ATOF = 0x050 + SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A + SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B + SYS_PTHREAD_RWLOCK_DESTROY = 0x50C + SYS_PTHREAD_RWLOCK_INIT = 0x50D + SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E + SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F + SYS_ATOI = 0x051 + SYS___FP_CLASS = 0x51D + SYS___FP_CLR_FLAG = 0x51A + SYS___FP_FINITE = 0x51E + SYS___FP_ISNAN = 0x51F + SYS___FP_RAISE_XCP = 0x51C + SYS___FP_READ_FLAG = 0x51B + SYS_RAND = 0x052 + SYS_SIGTIMEDWAIT = 0x52D + SYS_SIGWAITINFO = 0x52E + SYS___CHKBFP = 0x52F + SYS___FPC_RS = 0x52C + SYS___FPC_RW = 0x52A + SYS___FPC_SM = 0x52B + SYS_STRTOD = 0x053 + SYS_STRTOL = 0x054 + SYS_STRTOUL = 0x055 + SYS_MALLOC = 0x056 + SYS_SRAND = 0x057 + SYS_CALLOC = 0x058 + SYS_FREE = 0x059 + SYS___OSENV = 0x59F + SYS___W_PIOCTL = 0x59E + SYS_LONGJMP = 0x060 + SYS___FLOORF_B = 0x60A + SYS___FLOORL_B = 0x60B + SYS___FREXPF_B = 0x60C + SYS___FREXPL_B = 0x60D + SYS___LDEXPF_B = 0x60E + SYS___LDEXPL_B = 0x60F + SYS_SIGNAL = 0x061 + SYS___ATAN2F_B = 0x61A + SYS___ATAN2L_B = 0x61B + SYS___COSHF_B = 0x61C + SYS___COSHL_B = 0x61D + SYS___EXPF_B = 0x61E + SYS___EXPL_B = 0x61F + SYS_TMPNAM = 0x062 + SYS___ABSF_B = 0x62A + SYS___ABSL_B = 0x62C + SYS___ABS_B = 0x62B + SYS___FMODF_B = 0x62D + SYS___FMODL_B = 0x62E + SYS___MODFF_B = 0x62F + SYS_ATANL = 0x63A + SYS_CEILF = 0x63B + SYS_CEILL = 0x63C + SYS_COSF = 0x63D + SYS_COSHF = 0x63F + SYS_COSL = 0x63E + SYS_REMOVE = 0x063 + SYS_POWL = 0x64A + SYS_RENAME = 0x064 + SYS_SINF = 0x64B + SYS_SINHF = 0x64F + SYS_SINL = 0x64C + SYS_SQRTF = 0x64D + SYS_SQRTL = 0x64E + SYS_BTOWC = 0x65F + SYS_FREXPL = 0x65A + SYS_LDEXPF = 0x65B + SYS_LDEXPL = 0x65C + SYS_MODFF = 0x65D + SYS_MODFL = 0x65E + SYS_TMPFILE = 0x065 + SYS_FREOPEN = 0x066 + SYS___CHARMAP_INIT_A = 0x66E + SYS___GETHOSTBYADDR_R_A = 0x66C + SYS___GETHOSTBYNAME_A = 0x66A + SYS___GETHOSTBYNAME_R_A = 0x66D + SYS___MBLEN_A = 0x66F + SYS___RES_INIT_A = 0x66B + SYS_FCLOSE = 0x067 + SYS___GETGRGID_R_A = 0x67D + SYS___WCSTOMBS_A = 0x67A + SYS___WCSTOMBS_STD_A = 0x67B + SYS___WCSWIDTH_A = 0x67C + SYS___WCSWIDTH_ASIA = 0x67F + SYS___WCSWIDTH_STD_A = 0x67E + SYS_FFLUSH = 0x068 + SYS___GETLOGIN_R_A = 0x68E + SYS___GETPWNAM_R_A = 0x68C + SYS___GETPWUID_R_A = 0x68D + SYS___TTYNAME_R_A = 0x68F + SYS___WCWIDTH_ASIA = 0x68B + SYS___WCWIDTH_STD_A = 0x68A + SYS_FOPEN = 0x069 + SYS___REGEXEC_A = 0x69A + SYS___REGEXEC_STD_A = 0x69B + SYS___REGFREE_A = 0x69C + SYS___REGFREE_STD_A = 0x69D + SYS___STRCOLL_A = 0x69E + SYS___STRCOLL_C_A = 0x69F + SYS_SCANF = 0x070 + SYS___A64L_A = 0x70C + SYS___ECVT_A = 0x70D + SYS___FCVT_A = 0x70E + SYS___GCVT_A = 0x70F + SYS___STRTOUL_A = 0x70A + SYS_____AE_CORRESTBL_QUERY_A = 0x70B + SYS_SPRINTF = 0x071 + SYS___ACCESS_A = 0x71F + SYS___CATOPEN_A = 0x71E + SYS___GETOPT_A = 0x71D + SYS___REALPATH_A = 0x71A + SYS___SETENV_A = 0x71B + SYS___SYSTEM_A = 0x71C + SYS_FGETC = 0x072 + SYS___GAI_STRERROR_A = 0x72F + SYS___RMDIR_A = 0x72A + SYS___STATVFS_A = 0x72B + SYS___SYMLINK_A = 0x72C + SYS___TRUNCATE_A = 0x72D + SYS___UNLINK_A = 0x72E + SYS_VFPRINTF = 0x073 + SYS___ISSPACE_A = 0x73A + SYS___ISUPPER_A = 0x73B + SYS___ISWALNUM_A = 0x73F + SYS___ISXDIGIT_A = 0x73C + SYS___TOLOWER_A = 0x73D + SYS___TOUPPER_A = 0x73E + SYS_VPRINTF = 0x074 + SYS___CONFSTR_A = 0x74B + SYS___FDOPEN_A = 0x74E + SYS___FLDATA_A = 0x74F + SYS___FTOK_A = 0x74C + SYS___ISWXDIGIT_A = 0x74A + SYS___MKTEMP_A = 0x74D + SYS_VSPRINTF = 0x075 + SYS___GETGRGID_A = 0x75A + SYS___GETGRNAM_A = 0x75B + SYS___GETGROUPSBYNAME_A = 0x75C + SYS___GETHOSTENT_A = 0x75D + SYS___GETHOSTNAME_A = 0x75E + SYS___GETLOGIN_A = 0x75F + SYS_GETC = 0x076 + SYS___CREATEWORKUNIT_A = 0x76A + SYS___CTERMID_A = 0x76B + SYS___FMTMSG_A = 0x76C + SYS___INITGROUPS_A = 0x76D + SYS___MSGRCV_A = 0x76F + SYS_____LOGIN_A = 0x76E + SYS_FGETS = 0x077 + SYS___STRCASECMP_A = 0x77B + SYS___STRNCASECMP_A = 0x77C + SYS___TTYNAME_A = 0x77D + SYS___UNAME_A = 0x77E + SYS___UTIMES_A = 0x77F + SYS_____SERVER_PWU_A = 0x77A + SYS_FPUTC = 0x078 + SYS___CREAT_O_A = 0x78E + SYS___ENVNA = 0x78F + SYS___FREAD_A = 0x78A + SYS___FWRITE_A = 0x78B + SYS___ISASCII = 0x78D + SYS___OPEN_O_A = 0x78C + SYS_FPUTS = 0x079 + SYS___ASCTIME_A = 0x79C + SYS___CTIME_A = 0x79D + SYS___GETDATE_A = 0x79E + SYS___GETSERVBYPORT_A = 0x79A + SYS___GETSERVENT_A = 0x79B + SYS___TZSET_A = 0x79F + SYS_ACL_FROM_TEXT = 0x80C + SYS_ACL_SET_FD = 0x80A + SYS_ACL_SET_FILE = 0x80B + SYS_ACL_SORT = 0x80E + SYS_ACL_TO_TEXT = 0x80D + SYS_UNGETC = 0x080 + SYS___SHUTDOWN_REGISTRATION = 0x80F + SYS_FREAD = 0x081 + SYS_FREEADDRINFO = 0x81A + SYS_GAI_STRERROR = 0x81B + SYS_REXEC_AF = 0x81C + SYS___DYNALLOC_A = 0x81F + SYS___POE = 0x81D + SYS_WCSTOMBS = 0x082 + SYS___INET_ADDR_A = 0x82F + SYS___NLIST_A = 0x82A + SYS_____TCGETCP_A = 0x82B + SYS_____TCSETCP_A = 0x82C + SYS_____W_PIOCTL_A = 0x82E + SYS_MBTOWC = 0x083 + SYS___CABEND = 0x83D + SYS___LE_CIB_GET = 0x83E + SYS___RECVMSG_A = 0x83B + SYS___SENDMSG_A = 0x83A + SYS___SET_LAA_FOR_JIT = 0x83F + SYS_____LCHATTR_A = 0x83C + SYS_WCTOMB = 0x084 + SYS___CBRTL_B = 0x84A + SYS___COPYSIGNF_B = 0x84B + SYS___COPYSIGNL_B = 0x84C + SYS___COTANF_B = 0x84D + SYS___COTANL_B = 0x84F + SYS___COTAN_B = 0x84E + SYS_MBSTOWCS = 0x085 + SYS___LOG1PL_B = 0x85A + SYS___LOG2F_B = 0x85B + SYS___LOG2L_B = 0x85D + SYS___LOG2_B = 0x85C + SYS___REMAINDERF_B = 0x85E + SYS___REMAINDERL_B = 0x85F + SYS_ACOSHF = 0x86E + SYS_ACOSHL = 0x86F + SYS_WCSCPY = 0x086 + SYS___ERFCF_B = 0x86D + SYS___ERFF_B = 0x86C + SYS___LROUNDF_B = 0x86A + SYS___LROUND_B = 0x86B + SYS_COTANL = 0x87A + SYS_EXP2F = 0x87B + SYS_EXP2L = 0x87C + SYS_EXPM1F = 0x87D + SYS_EXPM1L = 0x87E + SYS_FDIMF = 0x87F + SYS_WCSCAT = 0x087 + SYS___COTANL = 0x87A + SYS_REMAINDERF = 0x88A + SYS_REMAINDERL = 0x88B + SYS_REMAINDF = 0x88A + SYS_REMAINDL = 0x88B + SYS_REMQUO = 0x88D + SYS_REMQUOF = 0x88C + SYS_REMQUOL = 0x88E + SYS_TGAMMAF = 0x88F + SYS_WCSCHR = 0x088 + SYS_ERFCF = 0x89B + SYS_ERFCL = 0x89C + SYS_ERFL = 0x89A + SYS_EXP2 = 0x89E + SYS_WCSCMP = 0x089 + SYS___EXP2_B = 0x89D + SYS___FAR_JUMP = 0x89F + SYS_ABS = 0x090 + SYS___ERFCL_H = 0x90A + SYS___EXPF_H = 0x90C + SYS___EXPL_H = 0x90D + SYS___EXPM1_H = 0x90E + SYS___EXP_H = 0x90B + SYS___FDIM_H = 0x90F + SYS_DIV = 0x091 + SYS___LOG2F_H = 0x91F + SYS___LOG2_H = 0x91E + SYS___LOGB_H = 0x91D + SYS___LOGF_H = 0x91B + SYS___LOGL_H = 0x91C + SYS___LOG_H = 0x91A + SYS_LABS = 0x092 + SYS___POWL_H = 0x92A + SYS___REMAINDER_H = 0x92B + SYS___RINT_H = 0x92C + SYS___SCALB_H = 0x92D + SYS___SINF_H = 0x92F + SYS___SIN_H = 0x92E + SYS_STRNCPY = 0x093 + SYS___TANHF_H = 0x93B + SYS___TANHL_H = 0x93C + SYS___TANH_H = 0x93A + SYS___TGAMMAF_H = 0x93E + SYS___TGAMMA_H = 0x93D + SYS___TRUNC_H = 0x93F + SYS_MEMCPY = 0x094 + SYS_VFWSCANF = 0x94A + SYS_VSWSCANF = 0x94E + SYS_VWSCANF = 0x94C + SYS_INET6_RTH_ADD = 0x95D + SYS_INET6_RTH_INIT = 0x95C + SYS_INET6_RTH_REVERSE = 0x95E + SYS_INET6_RTH_SEGMENTS = 0x95F + SYS_INET6_RTH_SPACE = 0x95B + SYS_MEMMOVE = 0x095 + SYS_WCSTOLD = 0x95A + SYS_STRCPY = 0x096 + SYS_STRCMP = 0x097 + SYS_CABS = 0x98E + SYS_STRCAT = 0x098 + SYS___CABS_B = 0x98F + SYS___POW_II = 0x98A + SYS___POW_II_B = 0x98B + SYS___POW_II_H = 0x98C + SYS_CACOSF = 0x99A + SYS_CACOSL = 0x99D + SYS_STRNCAT = 0x099 + SYS___CACOSF_B = 0x99B + SYS___CACOSF_H = 0x99C + SYS___CACOSL_B = 0x99E + SYS___CACOSL_H = 0x99F + SYS_ISWALPHA = 0x100 + SYS_ISWBLANK = 0x101 + SYS___ISWBLK = 0x101 + SYS_ISWCNTRL = 0x102 + SYS_ISWDIGIT = 0x103 + SYS_ISWGRAPH = 0x104 + SYS_ISWLOWER = 0x105 + SYS_ISWPRINT = 0x106 + SYS_ISWPUNCT = 0x107 + SYS_ISWSPACE = 0x108 + SYS_ISWUPPER = 0x109 + SYS_WCTOB = 0x110 + SYS_MBRLEN = 0x111 + SYS_MBRTOWC = 0x112 + SYS_MBSRTOWC = 0x113 + SYS_MBSRTOWCS = 0x113 + SYS_WCRTOMB = 0x114 + SYS_WCSRTOMB = 0x115 + SYS_WCSRTOMBS = 0x115 + SYS___CSID = 0x116 + SYS___WCSID = 0x117 + SYS_STRPTIME = 0x118 + SYS___STRPTM = 0x118 + SYS_STRFMON = 0x119 + SYS_WCSCOLL = 0x130 + SYS_WCSXFRM = 0x131 + SYS_WCSWIDTH = 0x132 + SYS_WCWIDTH = 0x133 + SYS_WCSFTIME = 0x134 + SYS_SWPRINTF = 0x135 + SYS_VSWPRINT = 0x136 + SYS_VSWPRINTF = 0x136 + SYS_SWSCANF = 0x137 + SYS_REGCOMP = 0x138 + SYS_REGEXEC = 0x139 + SYS_GETWC = 0x140 + SYS_GETWCHAR = 0x141 + SYS_PUTWC = 0x142 + SYS_PUTWCHAR = 0x143 + SYS_UNGETWC = 0x144 + SYS_ICONV_OPEN = 0x145 + SYS_ICONV = 0x146 + SYS_ICONV_CLOSE = 0x147 + SYS_COLLRANGE = 0x150 + SYS_CCLASS = 0x151 + SYS_COLLORDER = 0x152 + SYS___DEMANGLE = 0x154 + SYS_FDOPEN = 0x155 + SYS___ERRNO = 0x156 + SYS___ERRNO2 = 0x157 + SYS___TERROR = 0x158 + SYS_MAXCOLL = 0x169 + SYS_DLLLOAD = 0x170 + SYS__EXIT = 0x174 + SYS_ACCESS = 0x175 + SYS_ALARM = 0x176 + SYS_CFGETISPEED = 0x177 + SYS_CFGETOSPEED = 0x178 + SYS_CFSETISPEED = 0x179 + SYS_CREAT = 0x180 + SYS_CTERMID = 0x181 + SYS_DUP = 0x182 + SYS_DUP2 = 0x183 + SYS_EXECL = 0x184 + SYS_EXECLE = 0x185 + SYS_EXECLP = 0x186 + SYS_EXECV = 0x187 + SYS_EXECVE = 0x188 + SYS_EXECVP = 0x189 + SYS_FSTAT = 0x190 + SYS_FSYNC = 0x191 + SYS_FTRUNCATE = 0x192 + SYS_GETCWD = 0x193 + SYS_GETEGID = 0x194 + SYS_GETEUID = 0x195 + SYS_GETGID = 0x196 + SYS_GETGRGID = 0x197 + SYS_GETGRNAM = 0x198 + SYS_GETGROUPS = 0x199 + SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 + SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 + SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 + SYS_PTHREAD_MUTEX_INIT = 0x203 + SYS_PTHREAD_MUTEX_DESTROY = 0x204 + SYS_PTHREAD_MUTEX_LOCK = 0x205 + SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 + SYS_PTHREAD_MUTEX_UNLOCK = 0x207 + SYS_PTHREAD_ONCE = 0x209 + SYS_TW_OPEN = 0x210 + SYS_TW_FCNTL = 0x211 + SYS_PTHREAD_JOIN_D4_NP = 0x212 + SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 + SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 + SYS_EXTLINK_NP = 0x215 + SYS___PASSWD = 0x216 + SYS_SETGROUPS = 0x217 + SYS_INITGROUPS = 0x218 + SYS_WCSRCHR = 0x240 + SYS_SVC99 = 0x241 + SYS___SVC99 = 0x241 + SYS_WCSWCS = 0x242 + SYS_LOCALECO = 0x243 + SYS_LOCALECONV = 0x243 + SYS___LIBREL = 0x244 + SYS_RELEASE = 0x245 + SYS___RLSE = 0x245 + SYS_FLOCATE = 0x246 + SYS___FLOCT = 0x246 + SYS_FDELREC = 0x247 + SYS___FDLREC = 0x247 + SYS_FETCH = 0x248 + SYS___FETCH = 0x248 + SYS_QSORT = 0x249 + SYS___CLEANUPCATCH = 0x260 + SYS___CATCHMATCH = 0x261 + SYS___CLEAN2UPCATCH = 0x262 + SYS_GETPRIORITY = 0x270 + SYS_NICE = 0x271 + SYS_SETPRIORITY = 0x272 + SYS_GETITIMER = 0x273 + SYS_SETITIMER = 0x274 + SYS_MSGCTL = 0x275 + SYS_MSGGET = 0x276 + SYS_MSGRCV = 0x277 + SYS_MSGSND = 0x278 + SYS_MSGXRCV = 0x279 + SYS___MSGXR = 0x279 + SYS_SHMGET = 0x280 + SYS___GETIPC = 0x281 + SYS_SETGRENT = 0x282 + SYS_GETGRENT = 0x283 + SYS_ENDGRENT = 0x284 + SYS_SETPWENT = 0x285 + SYS_GETPWENT = 0x286 + SYS_ENDPWENT = 0x287 + SYS_BSD_SIGNAL = 0x288 + SYS_KILLPG = 0x289 + SYS_SIGSET = 0x290 + SYS_SIGSTACK = 0x291 + SYS_GETRLIMIT = 0x292 + SYS_SETRLIMIT = 0x293 + SYS_GETRUSAGE = 0x294 + SYS_MMAP = 0x295 + SYS_MPROTECT = 0x296 + SYS_MSYNC = 0x297 + SYS_MUNMAP = 0x298 + SYS_CONFSTR = 0x299 + SYS___NDMTRM = 0x300 + SYS_FTOK = 0x301 + SYS_BASENAME = 0x302 + SYS_DIRNAME = 0x303 + SYS_GETDTABLESIZE = 0x304 + SYS_MKSTEMP = 0x305 + SYS_MKTEMP = 0x306 + SYS_NFTW = 0x307 + SYS_GETWD = 0x308 + SYS_LOCKF = 0x309 + SYS_WORDEXP = 0x310 + SYS_WORDFREE = 0x311 + SYS_GETPGID = 0x312 + SYS_GETSID = 0x313 + SYS___UTMPXNAME = 0x314 + SYS_CUSERID = 0x315 + SYS_GETPASS = 0x316 + SYS_FNMATCH = 0x317 + SYS_FTW = 0x318 + SYS_GETW = 0x319 + SYS_ACOSH = 0x320 + SYS_ASINH = 0x321 + SYS_ATANH = 0x322 + SYS_CBRT = 0x323 + SYS_EXPM1 = 0x324 + SYS_ILOGB = 0x325 + SYS_LOGB = 0x326 + SYS_LOG1P = 0x327 + SYS_NEXTAFTER = 0x328 + SYS_RINT = 0x329 + SYS_SPAWN = 0x330 + SYS_SPAWNP = 0x331 + SYS_GETLOGIN_UU = 0x332 + SYS_ECVT = 0x333 + SYS_FCVT = 0x334 + SYS_GCVT = 0x335 + SYS_ACCEPT = 0x336 + SYS_BIND = 0x337 + SYS_CONNECT = 0x338 + SYS_ENDHOSTENT = 0x339 + SYS_GETHOSTENT = 0x340 + SYS_GETHOSTID = 0x341 + SYS_GETHOSTNAME = 0x342 + SYS_GETNETBYADDR = 0x343 + SYS_GETNETBYNAME = 0x344 + SYS_GETNETENT = 0x345 + SYS_GETPEERNAME = 0x346 + SYS_GETPROTOBYNAME = 0x347 + SYS_GETPROTOBYNUMBER = 0x348 + SYS_GETPROTOENT = 0x349 + SYS_INET_LNAOF = 0x350 + SYS_INET_MAKEADDR = 0x351 + SYS_INET_NETOF = 0x352 + SYS_INET_NETWORK = 0x353 + SYS_INET_NTOA = 0x354 + SYS_IOCTL = 0x355 + SYS_LISTEN = 0x356 + SYS_READV = 0x357 + SYS_RECV = 0x358 + SYS_RECVFROM = 0x359 + SYS_SETHOSTENT = 0x360 + SYS_SETNETENT = 0x361 + SYS_SETPEER = 0x362 + SYS_SETPROTOENT = 0x363 + SYS_SETSERVENT = 0x364 + SYS_SETSOCKOPT = 0x365 + SYS_SHUTDOWN = 0x366 + SYS_SOCKET = 0x367 + SYS_SOCKETPAIR = 0x368 + SYS_WRITEV = 0x369 + SYS_ENDNETENT = 0x370 + SYS_CLOSELOG = 0x371 + SYS_OPENLOG = 0x372 + SYS_SETLOGMASK = 0x373 + SYS_SYSLOG = 0x374 + SYS_PTSNAME = 0x375 + SYS_SETREUID = 0x376 + SYS_SETREGID = 0x377 + SYS_REALPATH = 0x378 + SYS___SIGNGAM = 0x379 + SYS_POLL = 0x380 + SYS_REXEC = 0x381 + SYS___ISASCII2 = 0x382 + SYS___TOASCII2 = 0x383 + SYS_CHPRIORITY = 0x384 + SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 + SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 + SYS_PTHREAD_SET_LIMIT_NP = 0x387 + SYS___STNETENT = 0x388 + SYS___STPROTOENT = 0x389 + SYS___SELECT1 = 0x390 + SYS_PTHREAD_SECURITY_NP = 0x391 + SYS___CHECK_RESOURCE_AUTH_NP = 0x392 + SYS___CONVERT_ID_NP = 0x393 + SYS___OPENVMREL = 0x394 + SYS_WMEMCHR = 0x395 + SYS_WMEMCMP = 0x396 + SYS_WMEMCPY = 0x397 + SYS_WMEMMOVE = 0x398 + SYS_WMEMSET = 0x399 + SYS___FPUTWC = 0x400 + SYS___PUTWC = 0x401 + SYS___PWCHAR = 0x402 + SYS___WCSFTM = 0x403 + SYS___WCSTOK = 0x404 + SYS___WCWDTH = 0x405 + SYS_T_ACCEPT = 0x409 + SYS_T_GETINFO = 0x410 + SYS_T_GETPROTADDR = 0x411 + SYS_T_GETSTATE = 0x412 + SYS_T_LISTEN = 0x413 + SYS_T_LOOK = 0x414 + SYS_T_OPEN = 0x415 + SYS_T_OPTMGMT = 0x416 + SYS_T_RCV = 0x417 + SYS_T_RCVCONNECT = 0x418 + SYS_T_RCVDIS = 0x419 + SYS_T_SNDUDATA = 0x420 + SYS_T_STRERROR = 0x421 + SYS_T_SYNC = 0x422 + SYS_T_UNBIND = 0x423 + SYS___T_ERRNO = 0x424 + SYS___RECVMSG2 = 0x425 + SYS___SENDMSG2 = 0x426 + SYS_FATTACH = 0x427 + SYS_FDETACH = 0x428 + SYS_GETMSG = 0x429 + SYS_GETCONTEXT = 0x430 + SYS_SETCONTEXT = 0x431 + SYS_MAKECONTEXT = 0x432 + SYS_SWAPCONTEXT = 0x433 + SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 + SYS_GETCLIENTID = 0x470 + SYS___GETCLIENTID = 0x471 + SYS_GETSTABLESIZE = 0x472 + SYS_GETIBMOPT = 0x473 + SYS_GETIBMSOCKOPT = 0x474 + SYS_GIVESOCKET = 0x475 + SYS_IBMSFLUSH = 0x476 + SYS_MAXDESC = 0x477 + SYS_SETIBMOPT = 0x478 + SYS_SETIBMSOCKOPT = 0x479 + SYS___SERVER_PWU = 0x480 + SYS_PTHREAD_TAG_NP = 0x481 + SYS___CONSOLE = 0x482 + SYS___WSINIT = 0x483 + SYS___IPTCPN = 0x489 + SYS___SERVER_CLASSIFY = 0x490 + SYS___HEAPRPT = 0x496 + SYS___ISBFP = 0x500 + SYS___FP_CAST = 0x501 + SYS___CERTIFICATE = 0x502 + SYS_SEND_FILE = 0x503 + SYS_AIO_CANCEL = 0x504 + SYS_AIO_ERROR = 0x505 + SYS_AIO_READ = 0x506 + SYS_AIO_RETURN = 0x507 + SYS_AIO_SUSPEND = 0x508 + SYS_AIO_WRITE = 0x509 + SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 + SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 + SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 + SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 + SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 + SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 + SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 + SYS___CTTBL = 0x517 + SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 + SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 + SYS___FP_UNORDERED = 0x520 + SYS___FP_READ_RND = 0x521 + SYS___FP_READ_RND_B = 0x522 + SYS___FP_SWAP_RND = 0x523 + SYS___FP_SWAP_RND_B = 0x524 + SYS___FP_LEVEL = 0x525 + SYS___FP_BTOH = 0x526 + SYS___FP_HTOB = 0x527 + SYS___FPC_RD = 0x528 + SYS___FPC_WR = 0x529 + SYS_PTHREAD_SETCANCELTYPE = 0x600 + SYS_PTHREAD_TESTCANCEL = 0x601 + SYS___ATANF_B = 0x602 + SYS___ATANL_B = 0x603 + SYS___CEILF_B = 0x604 + SYS___CEILL_B = 0x605 + SYS___COSF_B = 0x606 + SYS___COSL_B = 0x607 + SYS___FABSF_B = 0x608 + SYS___FABSL_B = 0x609 + SYS___SINF_B = 0x610 + SYS___SINL_B = 0x611 + SYS___TANF_B = 0x612 + SYS___TANL_B = 0x613 + SYS___TANHF_B = 0x614 + SYS___TANHL_B = 0x615 + SYS___ACOSF_B = 0x616 + SYS___ACOSL_B = 0x617 + SYS___ASINF_B = 0x618 + SYS___ASINL_B = 0x619 + SYS___LOGF_B = 0x620 + SYS___LOGL_B = 0x621 + SYS___LOG10F_B = 0x622 + SYS___LOG10L_B = 0x623 + SYS___POWF_B = 0x624 + SYS___POWL_B = 0x625 + SYS___SINHF_B = 0x626 + SYS___SINHL_B = 0x627 + SYS___SQRTF_B = 0x628 + SYS___SQRTL_B = 0x629 + SYS___MODFL_B = 0x630 + SYS_ABSF = 0x631 + SYS_ABSL = 0x632 + SYS_ACOSF = 0x633 + SYS_ACOSL = 0x634 + SYS_ASINF = 0x635 + SYS_ASINL = 0x636 + SYS_ATAN2F = 0x637 + SYS_ATAN2L = 0x638 + SYS_ATANF = 0x639 + SYS_COSHL = 0x640 + SYS_EXPF = 0x641 + SYS_EXPL = 0x642 + SYS_TANHF = 0x643 + SYS_TANHL = 0x644 + SYS_LOG10F = 0x645 + SYS_LOG10L = 0x646 + SYS_LOGF = 0x647 + SYS_LOGL = 0x648 + SYS_POWF = 0x649 + SYS_SINHL = 0x650 + SYS_TANF = 0x651 + SYS_TANL = 0x652 + SYS_FABSF = 0x653 + SYS_FABSL = 0x654 + SYS_FLOORF = 0x655 + SYS_FLOORL = 0x656 + SYS_FMODF = 0x657 + SYS_FMODL = 0x658 + SYS_FREXPF = 0x659 + SYS___CHATTR = 0x660 + SYS___FCHATTR = 0x661 + SYS___TOCCSID = 0x662 + SYS___CSNAMETYPE = 0x663 + SYS___TOCSNAME = 0x664 + SYS___CCSIDTYPE = 0x665 + SYS___AE_CORRESTBL_QUERY = 0x666 + SYS___AE_AUTOCONVERT_STATE = 0x667 + SYS_DN_FIND = 0x668 + SYS___GETHOSTBYADDR_A = 0x669 + SYS___MBLEN_SB_A = 0x670 + SYS___MBLEN_STD_A = 0x671 + SYS___MBLEN_UTF = 0x672 + SYS___MBSTOWCS_A = 0x673 + SYS___MBSTOWCS_STD_A = 0x674 + SYS___MBTOWC_A = 0x675 + SYS___MBTOWC_ISO1 = 0x676 + SYS___MBTOWC_SBCS = 0x677 + SYS___MBTOWC_MBCS = 0x678 + SYS___MBTOWC_UTF = 0x679 + SYS___CSID_A = 0x680 + SYS___CSID_STD_A = 0x681 + SYS___WCSID_A = 0x682 + SYS___WCSID_STD_A = 0x683 + SYS___WCTOMB_A = 0x684 + SYS___WCTOMB_ISO1 = 0x685 + SYS___WCTOMB_STD_A = 0x686 + SYS___WCTOMB_UTF = 0x687 + SYS___WCWIDTH_A = 0x688 + SYS___GETGRNAM_R_A = 0x689 + SYS___READDIR_R_A = 0x690 + SYS___E2A_S = 0x691 + SYS___FNMATCH_A = 0x692 + SYS___FNMATCH_C_A = 0x693 + SYS___EXECL_A = 0x694 + SYS___FNMATCH_STD_A = 0x695 + SYS___REGCOMP_A = 0x696 + SYS___REGCOMP_STD_A = 0x697 + SYS___REGERROR_A = 0x698 + SYS___REGERROR_STD_A = 0x699 + SYS___SWPRINTF_A = 0x700 + SYS___FSCANF_A = 0x701 + SYS___SCANF_A = 0x702 + SYS___SSCANF_A = 0x703 + SYS___SWSCANF_A = 0x704 + SYS___ATOF_A = 0x705 + SYS___ATOI_A = 0x706 + SYS___ATOL_A = 0x707 + SYS___STRTOD_A = 0x708 + SYS___STRTOL_A = 0x709 + SYS___L64A_A = 0x710 + SYS___STRERROR_A = 0x711 + SYS___PERROR_A = 0x712 + SYS___FETCH_A = 0x713 + SYS___GETENV_A = 0x714 + SYS___MKSTEMP_A = 0x717 + SYS___PTSNAME_A = 0x718 + SYS___PUTENV_A = 0x719 + SYS___CHDIR_A = 0x720 + SYS___CHOWN_A = 0x721 + SYS___CHROOT_A = 0x722 + SYS___GETCWD_A = 0x723 + SYS___GETWD_A = 0x724 + SYS___LCHOWN_A = 0x725 + SYS___LINK_A = 0x726 + SYS___PATHCONF_A = 0x727 + SYS___IF_NAMEINDEX_A = 0x728 + SYS___READLINK_A = 0x729 + SYS___EXTLINK_NP_A = 0x730 + SYS___ISALNUM_A = 0x731 + SYS___ISALPHA_A = 0x732 + SYS___A2E_S = 0x733 + SYS___ISCNTRL_A = 0x734 + SYS___ISDIGIT_A = 0x735 + SYS___ISGRAPH_A = 0x736 + SYS___ISLOWER_A = 0x737 + SYS___ISPRINT_A = 0x738 + SYS___ISPUNCT_A = 0x739 + SYS___ISWALPHA_A = 0x740 + SYS___A2E_L = 0x741 + SYS___ISWCNTRL_A = 0x742 + SYS___ISWDIGIT_A = 0x743 + SYS___ISWGRAPH_A = 0x744 + SYS___ISWLOWER_A = 0x745 + SYS___ISWPRINT_A = 0x746 + SYS___ISWPUNCT_A = 0x747 + SYS___ISWSPACE_A = 0x748 + SYS___ISWUPPER_A = 0x749 + SYS___REMOVE_A = 0x750 + SYS___RENAME_A = 0x751 + SYS___TMPNAM_A = 0x752 + SYS___FOPEN_A = 0x753 + SYS___FREOPEN_A = 0x754 + SYS___CUSERID_A = 0x755 + SYS___POPEN_A = 0x756 + SYS___TEMPNAM_A = 0x757 + SYS___FTW_A = 0x758 + SYS___GETGRENT_A = 0x759 + SYS___INET_NTOP_A = 0x760 + SYS___GETPASS_A = 0x761 + SYS___GETPWENT_A = 0x762 + SYS___GETPWNAM_A = 0x763 + SYS___GETPWUID_A = 0x764 + SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 + SYS___CHECKSCHENV_A = 0x766 + SYS___CONNECTSERVER_A = 0x767 + SYS___CONNECTWORKMGR_A = 0x768 + SYS_____CONSOLE_A = 0x769 + SYS___MSGSND_A = 0x770 + SYS___MSGXRCV_A = 0x771 + SYS___NFTW_A = 0x772 + SYS_____PASSWD_A = 0x773 + SYS___PTHREAD_SECURITY_NP_A = 0x774 + SYS___QUERYMETRICS_A = 0x775 + SYS___QUERYSCHENV = 0x776 + SYS___READV_A = 0x777 + SYS_____SERVER_CLASSIFY_A = 0x778 + SYS_____SERVER_INIT_A = 0x779 + SYS___W_GETPSENT_A = 0x780 + SYS___WRITEV_A = 0x781 + SYS___W_STATFS_A = 0x782 + SYS___W_STATVFS_A = 0x783 + SYS___FPUTC_A = 0x784 + SYS___PUTCHAR_A = 0x785 + SYS___PUTS_A = 0x786 + SYS___FGETS_A = 0x787 + SYS___GETS_A = 0x788 + SYS___FPUTS_A = 0x789 + SYS___PUTC_A = 0x790 + SYS___AE_THREAD_SETMODE = 0x791 + SYS___AE_THREAD_SWAPMODE = 0x792 + SYS___GETNETBYADDR_A = 0x793 + SYS___GETNETBYNAME_A = 0x794 + SYS___GETNETENT_A = 0x795 + SYS___GETPROTOBYNAME_A = 0x796 + SYS___GETPROTOBYNUMBER_A = 0x797 + SYS___GETPROTOENT_A = 0x798 + SYS___GETSERVBYNAME_A = 0x799 + SYS_ACL_FIRST_ENTRY = 0x800 + SYS_ACL_GET_ENTRY = 0x801 + SYS_ACL_VALID = 0x802 + SYS_ACL_CREATE_ENTRY = 0x803 + SYS_ACL_DELETE_ENTRY = 0x804 + SYS_ACL_UPDATE_ENTRY = 0x805 + SYS_ACL_DELETE_FD = 0x806 + SYS_ACL_DELETE_FILE = 0x807 + SYS_ACL_GET_FD = 0x808 + SYS_ACL_GET_FILE = 0x809 + SYS___ERFL_B = 0x810 + SYS___ERFCL_B = 0x811 + SYS___LGAMMAL_B = 0x812 + SYS___SETHOOKEVENTS = 0x813 + SYS_IF_NAMETOINDEX = 0x814 + SYS_IF_INDEXTONAME = 0x815 + SYS_IF_NAMEINDEX = 0x816 + SYS_IF_FREENAMEINDEX = 0x817 + SYS_GETADDRINFO = 0x818 + SYS_GETNAMEINFO = 0x819 + SYS___DYNFREE_A = 0x820 + SYS___RES_QUERY_A = 0x821 + SYS___RES_SEARCH_A = 0x822 + SYS___RES_QUERYDOMAIN_A = 0x823 + SYS___RES_MKQUERY_A = 0x824 + SYS___RES_SEND_A = 0x825 + SYS___DN_EXPAND_A = 0x826 + SYS___DN_SKIPNAME_A = 0x827 + SYS___DN_COMP_A = 0x828 + SYS___DN_FIND_A = 0x829 + SYS___INET_NTOA_A = 0x830 + SYS___INET_NETWORK_A = 0x831 + SYS___ACCEPT_A = 0x832 + SYS___ACCEPT_AND_RECV_A = 0x833 + SYS___BIND_A = 0x834 + SYS___CONNECT_A = 0x835 + SYS___GETPEERNAME_A = 0x836 + SYS___GETSOCKNAME_A = 0x837 + SYS___RECVFROM_A = 0x838 + SYS___SENDTO_A = 0x839 + SYS___LCHATTR = 0x840 + SYS___WRITEDOWN = 0x841 + SYS_PTHREAD_MUTEX_INIT2 = 0x842 + SYS___ACOSHF_B = 0x843 + SYS___ACOSHL_B = 0x844 + SYS___ASINHF_B = 0x845 + SYS___ASINHL_B = 0x846 + SYS___ATANHF_B = 0x847 + SYS___ATANHL_B = 0x848 + SYS___CBRTF_B = 0x849 + SYS___EXP2F_B = 0x850 + SYS___EXP2L_B = 0x851 + SYS___EXPM1F_B = 0x852 + SYS___EXPM1L_B = 0x853 + SYS___FDIMF_B = 0x854 + SYS___FDIM_B = 0x855 + SYS___FDIML_B = 0x856 + SYS___HYPOTF_B = 0x857 + SYS___HYPOTL_B = 0x858 + SYS___LOG1PF_B = 0x859 + SYS___REMQUOF_B = 0x860 + SYS___REMQUO_B = 0x861 + SYS___REMQUOL_B = 0x862 + SYS___TGAMMAF_B = 0x863 + SYS___TGAMMA_B = 0x864 + SYS___TGAMMAL_B = 0x865 + SYS___TRUNCF_B = 0x866 + SYS___TRUNC_B = 0x867 + SYS___TRUNCL_B = 0x868 + SYS___LGAMMAF_B = 0x869 + SYS_ASINHF = 0x870 + SYS_ASINHL = 0x871 + SYS_ATANHF = 0x872 + SYS_ATANHL = 0x873 + SYS_CBRTF = 0x874 + SYS_CBRTL = 0x875 + SYS_COPYSIGNF = 0x876 + SYS_CPYSIGNF = 0x876 + SYS_COPYSIGNL = 0x877 + SYS_CPYSIGNL = 0x877 + SYS_COTANF = 0x878 + SYS___COTANF = 0x878 + SYS_COTAN = 0x879 + SYS___COTAN = 0x879 + SYS_FDIM = 0x881 + SYS_FDIML = 0x882 + SYS_HYPOTF = 0x883 + SYS_HYPOTL = 0x884 + SYS_LOG1PF = 0x885 + SYS_LOG1PL = 0x886 + SYS_LOG2F = 0x887 + SYS_LOG2 = 0x888 + SYS_LOG2L = 0x889 + SYS_TGAMMA = 0x890 + SYS_TGAMMAL = 0x891 + SYS_TRUNCF = 0x892 + SYS_TRUNC = 0x893 + SYS_TRUNCL = 0x894 + SYS_LGAMMAF = 0x895 + SYS_LGAMMAL = 0x896 + SYS_LROUNDF = 0x897 + SYS_LROUND = 0x898 + SYS_ERFF = 0x899 + SYS___COSHF_H = 0x900 + SYS___COSHL_H = 0x901 + SYS___COTAN_H = 0x902 + SYS___COTANF_H = 0x903 + SYS___COTANL_H = 0x904 + SYS___ERF_H = 0x905 + SYS___ERFF_H = 0x906 + SYS___ERFL_H = 0x907 + SYS___ERFC_H = 0x908 + SYS___ERFCF_H = 0x909 + SYS___FDIMF_H = 0x910 + SYS___FDIML_H = 0x911 + SYS___FMOD_H = 0x912 + SYS___FMODF_H = 0x913 + SYS___FMODL_H = 0x914 + SYS___GAMMA_H = 0x915 + SYS___HYPOT_H = 0x916 + SYS___ILOGB_H = 0x917 + SYS___LGAMMA_H = 0x918 + SYS___LGAMMAF_H = 0x919 + SYS___LOG2L_H = 0x920 + SYS___LOG1P_H = 0x921 + SYS___LOG10_H = 0x922 + SYS___LOG10F_H = 0x923 + SYS___LOG10L_H = 0x924 + SYS___LROUND_H = 0x925 + SYS___LROUNDF_H = 0x926 + SYS___NEXTAFTER_H = 0x927 + SYS___POW_H = 0x928 + SYS___POWF_H = 0x929 + SYS___SINL_H = 0x930 + SYS___SINH_H = 0x931 + SYS___SINHF_H = 0x932 + SYS___SINHL_H = 0x933 + SYS___SQRT_H = 0x934 + SYS___SQRTF_H = 0x935 + SYS___SQRTL_H = 0x936 + SYS___TAN_H = 0x937 + SYS___TANF_H = 0x938 + SYS___TANL_H = 0x939 + SYS___TRUNCF_H = 0x940 + SYS___TRUNCL_H = 0x941 + SYS___COSH_H = 0x942 + SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 + SYS_VFSCANF = 0x944 + SYS_VSCANF = 0x946 + SYS_VSSCANF = 0x948 + SYS_IMAXABS = 0x950 + SYS_IMAXDIV = 0x951 + SYS_STRTOIMAX = 0x952 + SYS_STRTOUMAX = 0x953 + SYS_WCSTOIMAX = 0x954 + SYS_WCSTOUMAX = 0x955 + SYS_ATOLL = 0x956 + SYS_STRTOF = 0x957 + SYS_STRTOLD = 0x958 + SYS_WCSTOF = 0x959 + SYS_INET6_RTH_GETADDR = 0x960 + SYS_INET6_OPT_INIT = 0x961 + SYS_INET6_OPT_APPEND = 0x962 + SYS_INET6_OPT_FINISH = 0x963 + SYS_INET6_OPT_SET_VAL = 0x964 + SYS_INET6_OPT_NEXT = 0x965 + SYS_INET6_OPT_FIND = 0x966 + SYS_INET6_OPT_GET_VAL = 0x967 + SYS___POW_I = 0x987 + SYS___POW_I_B = 0x988 + SYS___POW_I_H = 0x989 + SYS___CABS_H = 0x990 + SYS_CABSF = 0x991 + SYS___CABSF_B = 0x992 + SYS___CABSF_H = 0x993 + SYS_CABSL = 0x994 + SYS___CABSL_B = 0x995 + SYS___CABSL_H = 0x996 + SYS_CACOS = 0x997 + SYS___CACOS_B = 0x998 + SYS___CACOS_H = 0x999 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index 295859c50..7a8161c1d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -1,6 +1,7 @@ // cgo -godefs types_aix.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc && aix // +build ppc,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index a9ee0ffd4..07ed733c5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -1,6 +1,7 @@ // cgo -godefs types_aix.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && aix // +build ppc64,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index 725b4bee2..54db43335 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 080ffce32..eb73e52fb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin package unix @@ -210,6 +211,13 @@ type RawSockaddrCtl struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + type Linger struct { Onoff int32 Linger int32 @@ -273,6 +281,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index f2a77bc4e..8606d654e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index c9492428b..dcb51f840 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin package unix @@ -210,6 +211,13 @@ type RawSockaddrCtl struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + type Linger struct { Onoff int32 Linger int32 @@ -273,6 +281,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 85506a05d..1d049d7a1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_dragonfly.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 3e9dad33e..c51bc88ff 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd package unix @@ -250,6 +251,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -312,6 +321,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index e00e61554..395b69187 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd package unix @@ -246,6 +247,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -308,6 +317,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 5da13c871..d3f9d2541 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd package unix @@ -248,6 +249,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -310,6 +319,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 995ecf9d4..434d6e8e8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd package unix @@ -246,6 +247,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -308,6 +317,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 9f3b1a4e5..d3a18713b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix @@ -83,7 +84,7 @@ type FileCloneRange struct { Dest_offset uint64 } -type FileDedupeRange struct { +type RawFileDedupeRange struct { Src_offset uint64 Src_length uint64 Dest_count uint16 @@ -91,6 +92,21 @@ type FileDedupeRange struct { Reserved2 uint32 } +type RawFileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +const ( + SizeofRawFileDedupeRange = 0x18 + SizeofRawFileDedupeRangeInfo = 0x20 + FILE_DEDUPE_RANGE_SAME = 0x0 + FILE_DEDUPE_RANGE_DIFFERS = 0x1 +) + type FscryptPolicy struct { Version uint8 Contents_encryption_mode uint8 @@ -288,7 +304,8 @@ type RawSockaddrVM struct { Reserved1 uint16 Port uint32 Cid uint32 - Zero [4]uint8 + Flags uint8 + Zero [3]uint8 } type RawSockaddrXDP struct { @@ -999,7 +1016,7 @@ const ( PERF_SAMPLE_PHYS_ADDR = 0x80000 PERF_SAMPLE_AUX = 0x100000 PERF_SAMPLE_CGROUP = 0x200000 - PERF_SAMPLE_MAX = 0x400000 + PERF_SAMPLE_MAX = 0x1000000 PERF_SAMPLE_BRANCH_USER_SHIFT = 0x0 PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 0x1 PERF_SAMPLE_BRANCH_HV_SHIFT = 0x2 @@ -3680,3 +3697,15 @@ const ( ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2 ETHTOOL_A_TUNNEL_INFO_MAX = 0x2 ) + +type ( + HIDRawReportDescriptor struct { + Size uint32 + Value [4096]uint8 + } + HIDRawDevInfo struct { + Bustype uint32 + Vendor int16 + Product int16 + } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 088bd77e3..4d4d283de 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 078d958ec..8a2eed5ec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 2d39122f4..94b34add6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 304cbd045..2143de4d5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 7d9d57006..a40216eee 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index a1eb2577b..e834b069f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 2e5ce3b6a..e31083b04 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index bbaa1200b..42811f7fb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 0e6e8a774..2a3afbaef 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 7382f385f..c0de30a65 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 28d552216..74faf2e91 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index a91a7a44b..9a8f0c2c6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index f824b2358..72cdda75b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 3f11f88e3..b10e73abf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 0bed83af5..28ed6d55a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index e4e3bf736..4ba196ebe 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index efac861bb..dd642bd9c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 80fa295f1..1fdb0e5fa 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 560dd6d08..e2fc93c7c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index 0c1700fa4..8d34b5a2f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 5b3e46633..ea8f1a0d9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index 62bff1670..ec6e8bc3f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index ca512aff7..85effef9c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_solaris.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && solaris // +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go new file mode 100644 index 000000000..8bffde78e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -0,0 +1,402 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Hand edited based on ztypes_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +const ( + SizeofSockaddrAny = 128 + SizeofCmsghdr = 12 + SizeofIPMreq = 8 + SizeofIPv6Mreq = 20 + SizeofICMPv6Filter = 32 + SizeofIPv6MTUInfo = 32 + SizeofLinger = 8 + SizeofSockaddrInet4 = 16 + SizeofSockaddrInet6 = 28 + SizeofTCPInfo = 0x68 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type timeval_zos struct { //correct (with padding and all) + Sec int64 + _ [4]byte // pad + Usec int32 +} + +type Tms struct { //clock_t is 4-byte unsigned int in zos + Utime uint32 + Stime uint32 + Cutime uint32 + Cstime uint32 +} + +type Time_t int64 + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [108]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + _ [112]uint8 // pad +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Iov *Iovec + Control *byte + Flags int32 + Namelen int32 + Iovlen int32 + Controllen int32 +} + +type Cmsghdr struct { + Len int32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Addr [4]byte /* in_addr */ + Ifindex uint32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type _Gid_t uint32 + +type rusage_zos struct { + Utime timeval_zos + Stime timeval_zos +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +// { int, short, short } in poll.h +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +type Stat_t struct { //Linux Definition + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Stat_LE_t struct { + _ [4]byte // eye catcher + Length uint16 + Version uint16 + Mode int32 + Ino uint32 + Dev uint32 + Nlink int32 + Uid int32 + Gid int32 + Size int64 + Atim31 [4]byte + Mtim31 [4]byte + Ctim31 [4]byte + Rdev uint32 + Auditoraudit uint32 + Useraudit uint32 + Blksize int32 + Creatim31 [4]byte + AuditID [16]byte + _ [4]byte // rsrvd1 + File_tag struct { + Ccsid uint16 + Txtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14 + } + CharsetID [8]byte + Blocks int64 + Genvalue uint32 + Reftim31 [4]byte + Fid [8]byte + Filefmt byte + Fspflag2 byte + _ [2]byte // rsrvd2 + Ctimemsec int32 + Seclabel [8]byte + _ [4]byte // rsrvd3 + _ [4]byte // rsrvd4 + Atim Time_t + Mtim Time_t + Ctim Time_t + Creatim Time_t + Reftim Time_t + _ [24]byte // rsrvd5 +} + +type Statvfs_t struct { + ID [4]byte + Len int32 + Bsize uint64 + Blocks uint64 + Usedspace uint64 + Bavail uint64 + Flag uint64 + Maxfilesize int64 + _ [16]byte + Frsize uint64 + Bfree uint64 + Files uint32 + Ffree uint32 + Favail uint32 + Namemax31 uint32 + Invarsec uint32 + _ [4]byte + Fsid uint64 + Namemax uint64 +} + +type Statfs_t struct { + Type uint32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint32 + Ffree uint32 + Fsid uint64 + Namelen uint64 + Frsize uint64 + Flags uint64 +} + +type Dirent struct { + Reclen uint16 + Namlen uint16 + Ino uint32 + Extra uintptr + Name [256]byte +} + +// This struct is packed on z/OS so it can't be used directly. +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type Termios struct { + Cflag uint32 + Iflag uint32 + Lflag uint32 + Oflag uint32 + Cc [11]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type W_Mnth struct { + Hid [4]byte + Size int32 + Cur1 int32 //32bit pointer + Cur2 int32 //^ + Devno uint32 + _ [4]byte +} + +type W_Mntent struct { + Fstype uint32 + Mode uint32 + Dev uint32 + Parentdev uint32 + Rootino uint32 + Status byte + Ddname [9]byte + Fstname [9]byte + Fsname [45]byte + Pathlen uint32 + Mountpoint [1024]byte + Jobname [8]byte + PID int32 + Parmoffset int32 + Parmlen int16 + Owner [8]byte + Quiesceowner [8]byte + _ [38]byte +} diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go index 3606c3a8b..924775b82 100644 --- a/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -6,6 +6,11 @@ package windows +import ( + errorspkg "errors" + "unsafe" +) + // EscapeArg rewrites command line argument s as prescribed // in http://msdn.microsoft.com/en-us/library/ms880421. // This function returns "" (2 double quotes) if s is empty. @@ -95,3 +100,31 @@ func FullPath(name string) (path string, err error) { } } } + +// NewProcThreadAttributeList allocates a new ProcThreadAttributeList, with the requested maximum number of attributes. +func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, error) { + var size uintptr + err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size) + if err != ERROR_INSUFFICIENT_BUFFER { + if err == nil { + return nil, errorspkg.New("unable to query buffer size from InitializeProcThreadAttributeList") + } + return nil, err + } + al := (*ProcThreadAttributeList)(unsafe.Pointer(&make([]byte, size)[0])) + err = initializeProcThreadAttributeList(al, maxAttrCount, 0, &size) + if err != nil { + return nil, err + } + return al, err +} + +// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute. +func (al *ProcThreadAttributeList) Update(attribute uintptr, flags uint32, value unsafe.Pointer, size uintptr, prevValue uintptr, returnedSize *uintptr) error { + return updateProcThreadAttribute(al, flags, attribute, uintptr(value), size, prevValue, returnedSize) +} + +// Delete frees ProcThreadAttributeList's resources. +func (al *ProcThreadAttributeList) Delete() { + deleteProcThreadAttributeList(al) +} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 0197df872..23238fad4 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -208,12 +208,15 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetSystemTimeAsFileTime(time *Filetime) //sys GetSystemTimePreciseAsFileTime(time *Filetime) //sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] -//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) -//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) -//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) //sys CancelIo(s Handle) (err error) //sys CancelIoEx(s Handle, o *Overlapped) (err error) //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList +//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList +//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value uintptr, size uintptr, prevvalue uintptr, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute //sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) //sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW //sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId @@ -283,6 +286,9 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy //sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW //sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension +//sys CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore +//sys CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore +//sys CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey //sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject //sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject //sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData @@ -338,6 +344,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost //sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) //sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) +//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) // Volume Management Functions //sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW @@ -770,6 +778,7 @@ const socket_error = uintptr(^uint32(0)) //sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend //sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom //sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW //sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname //sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname //sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index fd4260762..c26088985 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -215,6 +215,18 @@ const ( INHERIT_PARENT_AFFINITY = 0x00010000 ) +const ( + // attributes for ProcThreadAttributeList + PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 + PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 + PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 + PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 + PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 + PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 + PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 + PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b +) + const ( // flags for CreateToolhelp32Snapshot TH32CS_SNAPHEAPLIST = 0x01 @@ -287,6 +299,23 @@ const ( PKCS12_NO_PERSIST_KEY = 0x00008000 PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 + /* Flags for CryptAcquireCertificatePrivateKey */ + CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 + CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 + CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 + CRYPT_ACQUIRE_NO_HEALING = 0x00000008 + CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 + CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 + CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 + CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 + CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 + CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 + + /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ + AT_KEYEXCHANGE = 1 + AT_SIGNATURE = 2 + CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF + /* Default usage match type is AND with value zero */ USAGE_MATCH_TYPE_AND = 0 USAGE_MATCH_TYPE_OR = 1 @@ -412,6 +441,89 @@ const ( CERT_TRUST_IS_CA_TRUSTED = 0x00004000 CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + /* Certificate Information Flags */ + CERT_INFO_VERSION_FLAG = 1 + CERT_INFO_SERIAL_NUMBER_FLAG = 2 + CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 + CERT_INFO_ISSUER_FLAG = 4 + CERT_INFO_NOT_BEFORE_FLAG = 5 + CERT_INFO_NOT_AFTER_FLAG = 6 + CERT_INFO_SUBJECT_FLAG = 7 + CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 + CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 + CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 + CERT_INFO_EXTENSION_FLAG = 11 + + /* dwFindType for CertFindCertificateInStore */ + CERT_COMPARE_MASK = 0xFFFF + CERT_COMPARE_SHIFT = 16 + CERT_COMPARE_ANY = 0 + CERT_COMPARE_SHA1_HASH = 1 + CERT_COMPARE_NAME = 2 + CERT_COMPARE_ATTR = 3 + CERT_COMPARE_MD5_HASH = 4 + CERT_COMPARE_PROPERTY = 5 + CERT_COMPARE_PUBLIC_KEY = 6 + CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH + CERT_COMPARE_NAME_STR_A = 7 + CERT_COMPARE_NAME_STR_W = 8 + CERT_COMPARE_KEY_SPEC = 9 + CERT_COMPARE_ENHKEY_USAGE = 10 + CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE + CERT_COMPARE_SUBJECT_CERT = 11 + CERT_COMPARE_ISSUER_OF = 12 + CERT_COMPARE_EXISTING = 13 + CERT_COMPARE_SIGNATURE_HASH = 14 + CERT_COMPARE_KEY_IDENTIFIER = 15 + CERT_COMPARE_CERT_ID = 16 + CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 + CERT_COMPARE_PUBKEY_MD5_HASH = 18 + CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 + CERT_COMPARE_HASH_STR = 20 + CERT_COMPARE_HAS_PRIVATE_KEY = 21 + CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) + CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) + CERT_FIND_HASH = CERT_FIND_SHA1_HASH + CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) + CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) + CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME< Date: Sun, 28 Feb 2021 15:09:28 +0200 Subject: [PATCH 07/46] lib/promscrape/discovery/kubernetes: pre-populate labelsByKey in reloadObject() --- lib/promscrape/discovery/kubernetes/api.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index ca77b10de..913826a3a 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -305,8 +305,13 @@ func (uw *urlWatcher) reloadObjects() string { logger.Errorf("cannot parse response from %q: %s", requestURL, err) return "" } + labelsByKey := make(map[string][]map[string]string, len(objectsByKey)) + for k, o := range objectsByKey { + labelsByKey[k] = o.getTargetLabels(uw) + } uw.mu.Lock() uw.objectsByKey = objectsByKey + uw.labelsByKey = labelsByKey uw.mu.Unlock() return metadata.ResourceVersion } From b523e0369c5a7f28043eba26f405d4bc6acfa29d Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 15:12:08 +0200 Subject: [PATCH 08/46] lib/promscrape/discovery/kubernetes: typo fix after 241ffd1f3bd005fe07710ce00ce577aad2f46a35 --- lib/promscrape/discovery/kubernetes/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 913826a3a..a016b8a10 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -307,7 +307,7 @@ func (uw *urlWatcher) reloadObjects() string { } labelsByKey := make(map[string][]map[string]string, len(objectsByKey)) for k, o := range objectsByKey { - labelsByKey[k] = o.getTargetLabels(uw) + labelsByKey[k] = o.getTargetLabels(uw.aw) } uw.mu.Lock() uw.objectsByKey = objectsByKey From 68a0f5ce12b65a6c9e0a7d22847d6e9f04410070 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 15:25:30 +0200 Subject: [PATCH 09/46] lib/promscrape/discovery/kubernetes: fix deadlock in startWatcherForURL reloadObjects must be called without holding aw.mu lock --- lib/promscrape/discovery/kubernetes/api.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index a016b8a10..a9ba32470 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -217,14 +217,16 @@ func (aw *apiWatcher) startWatchersForRole(role string) { func (aw *apiWatcher) startWatcherForURL(role, apiURL string, parseObject parseObjectFunc, parseObjectList parseObjectListFunc) { aw.mu.Lock() - defer aw.mu.Unlock() if aw.watchersByURL[apiURL] != nil { // Watcher for the given path already exists. + aw.mu.Unlock() return } uw := aw.newURLWatcher(role, apiURL, parseObject, parseObjectList) - resourceVersion := uw.reloadObjects() aw.watchersByURL[apiURL] = uw + aw.mu.Unlock() + + resourceVersion := uw.reloadObjects() go func() { uw.watchForUpdates(resourceVersion) aw.mu.Lock() From 59a31171e36234e2acecadc3ba472a6ce5822c00 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 16:05:13 +0200 Subject: [PATCH 10/46] lib/promscrape: fix possible deadlock in parallel execution of target relabeling --- lib/promscrape/config.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 641adf8f1..ceeb531fc 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -611,9 +611,9 @@ func appendScrapeWorkForTargetLabels(dst []*ScrapeWork, swc *scrapeWorkConfig, t sw *ScrapeWork err error } - resultCh := make(chan result) - workCh := make(chan map[string]string) goroutines := cgroup.AvailableCPUs() + resultCh := make(chan result, len(targetLabels)) + workCh := make(chan map[string]string, goroutines) for i := 0; i < goroutines; i++ { go func() { for metaLabels := range workCh { From c459600346ed9658ac04390a8074a5b62b17404b Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 16:07:07 +0200 Subject: [PATCH 11/46] lib/promscrape/discovery/kubernetes: remove `resourceVersionMatch=NotOlderThan` query arg when watching for k8s object changes, since it cannot be used when `watch=1` query arg is passed --- lib/promscrape/discovery/kubernetes/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index a9ba32470..84d54637d 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -347,7 +347,7 @@ func (uw *urlWatcher) watchForUpdates(resourceVersion string) { } requestURL := apiURL if resourceVersion != "" { - requestURL += "&resourceVersion=" + url.QueryEscape(resourceVersion) + "&resourceVersionMatch=NotOlderThan" + requestURL += "&resourceVersion=" + url.QueryEscape(resourceVersion) } resp, err := aw.doRequest(requestURL) if err != nil { From b21b110b7a61901c5b19b45895e1a69fc2daf65d Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 16:57:40 +0200 Subject: [PATCH 12/46] lib/promscrape/discovery/kubernetes: add `vm_promscrape_discovery_kubernetes_*` metrics for monitoring internal state of k8s service discovery --- lib/promscrape/discovery/kubernetes/api.go | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 84d54637d..caf97f0bf 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -20,6 +20,7 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils" + "github.com/VictoriaMetrics/metrics" ) var apiServerTimeout = flag.Duration("promscrape.kubernetes.apiServerTimeout", 10*time.Minute, "How frequently to reload the full state from Kuberntes API server") @@ -226,12 +227,16 @@ func (aw *apiWatcher) startWatcherForURL(role, apiURL string, parseObject parseO aw.watchersByURL[apiURL] = uw aw.mu.Unlock() + uw.watchersCount.Inc() + uw.watchersCreated.Inc() resourceVersion := uw.reloadObjects() go func() { uw.watchForUpdates(resourceVersion) aw.mu.Lock() delete(aw.watchersByURL, apiURL) aw.mu.Unlock() + uw.watchersCount.Dec() + uw.watchersStopped.Inc() }() } @@ -271,6 +276,14 @@ type urlWatcher struct { // the parent apiWatcher aw *apiWatcher + + watchersCount *metrics.Counter + watchersCreated *metrics.Counter + watchersStopped *metrics.Counter + + objectsCount *metrics.Counter + objectsAdded *metrics.Counter + objectsRemoved *metrics.Counter } func (aw *apiWatcher) newURLWatcher(role, apiURL string, parseObject parseObjectFunc, parseObjectList parseObjectListFunc) *urlWatcher { @@ -285,6 +298,14 @@ func (aw *apiWatcher) newURLWatcher(role, apiURL string, parseObject parseObject labelsByKey: make(map[string][]map[string]string), aw: aw, + + watchersCount: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_url_watchers{role=%q}`, role)), + watchersCreated: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_url_watchers_created_total{role=%q}`, role)), + watchersStopped: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_url_watchers_stopped_total{role=%q}`, role)), + + objectsCount: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_objects{role=%q}`, role)), + objectsAdded: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_objects_added_total{role=%q}`, role)), + objectsRemoved: metrics.GetOrCreateCounter(fmt.Sprintf(`vm_promscrape_discovery_kubernetes_objects_removed_total{role=%q}`, role)), } } @@ -312,6 +333,9 @@ func (uw *urlWatcher) reloadObjects() string { labelsByKey[k] = o.getTargetLabels(uw.aw) } uw.mu.Lock() + uw.objectsRemoved.Add(-len(uw.objectsByKey)) + uw.objectsAdded.Add(len(objectsByKey)) + uw.objectsCount.Add(len(objectsByKey) - len(uw.objectsByKey)) uw.objectsByKey = objectsByKey uw.labelsByKey = labelsByKey uw.mu.Unlock() @@ -399,6 +423,10 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error { switch we.Type { case "ADDED", "MODIFIED": uw.mu.Lock() + if uw.objectsByKey[key] == nil { + uw.objectsAdded.Inc() + uw.objectsCount.Inc() + } uw.objectsByKey[key] = o uw.mu.Unlock() labels := o.getTargetLabels(uw.aw) @@ -407,6 +435,10 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error { uw.mu.Unlock() case "DELETED": uw.mu.Lock() + if uw.objectsByKey[key] != nil { + uw.objectsRemoved.Inc() + uw.objectsCount.Dec() + } delete(uw.objectsByKey, key) delete(uw.labelsByKey, key) uw.mu.Unlock() From e02d1ef93cb5434ea5beaabe01eb287bea1f5458 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 17:05:28 +0200 Subject: [PATCH 13/46] lib/promscrape/discovery/kubernetes: properly account the number of objects when watcher is stopped A follow-up for b21b110b7a61901c5b19b45895e1a69fc2daf65d --- lib/promscrape/discovery/kubernetes/api.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index caf97f0bf..8a384f4d9 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -232,6 +232,11 @@ func (aw *apiWatcher) startWatcherForURL(role, apiURL string, parseObject parseO resourceVersion := uw.reloadObjects() go func() { uw.watchForUpdates(resourceVersion) + uw.mu.Lock() + uw.objectsCount.Add(-len(uw.objectsByKey)) + uw.objectsRemoved.Add(len(uw.objectsByKey)) + uw.mu.Unlock() + aw.mu.Lock() delete(aw.watchersByURL, apiURL) aw.mu.Unlock() From 51bf57743181ece22a920931ae83d721a1a6744a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 17:42:45 +0200 Subject: [PATCH 14/46] vendor: update github.com/VictoriaMetrics/metrics from v1.15.0 to v1.15.1 This can help with https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096 --- go.mod | 2 +- go.sum | 4 ++-- .../VictoriaMetrics/metrics/histogram.go | 16 ++++++++-------- vendor/modules.txt | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index c11bd8098..5f8f812fc 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( // Do not use the original github.com/valyala/fasthttp because of issues // like https://github.com/valyala/fasthttp/commit/996610f021ff45fdc98c2ce7884d5fa4e7f9199b github.com/VictoriaMetrics/fasthttp v1.0.12 - github.com/VictoriaMetrics/metrics v1.15.0 + github.com/VictoriaMetrics/metrics v1.15.1 github.com/VictoriaMetrics/metricsql v0.12.0 github.com/aws/aws-sdk-go v1.37.20 github.com/cespare/xxhash/v2 v2.1.1 diff --git a/go.sum b/go.sum index f16da0f57..986d96a20 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6Ro github.com/VictoriaMetrics/fasthttp v1.0.12 h1:Ag0E119yrH4BTxVyjKD9TeiSImtG9bUcg/stItLJhSE= github.com/VictoriaMetrics/fasthttp v1.0.12/go.mod h1:3SeUL4zwB/p/a9aEeRc6gdlbrtNHXBJR6N376EgiSHU= github.com/VictoriaMetrics/metrics v1.12.2/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= -github.com/VictoriaMetrics/metrics v1.15.0 h1:HGmGaILioC4vNk6UhkcwLIaDlg5y4MVganq1verl5js= -github.com/VictoriaMetrics/metrics v1.15.0/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= +github.com/VictoriaMetrics/metrics v1.15.1 h1:KNYdbuNLh6+1jOOURZPxK9+myoebwv3y6CUPdVxczHE= +github.com/VictoriaMetrics/metrics v1.15.1/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= github.com/VictoriaMetrics/metricsql v0.12.0 h1:NMIu0MPBmGP34g4RUjI1U0xW5XYp7IVNXe9KtZI3PFQ= github.com/VictoriaMetrics/metricsql v0.12.0/go.mod h1:ylO7YITho/Iw6P71oEaGyHbO94bGoGtzWfLGqFhMIg8= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= diff --git a/vendor/github.com/VictoriaMetrics/metrics/histogram.go b/vendor/github.com/VictoriaMetrics/metrics/histogram.go index a424c5d3b..ebdd00d9e 100644 --- a/vendor/github.com/VictoriaMetrics/metrics/histogram.go +++ b/vendor/github.com/VictoriaMetrics/metrics/histogram.go @@ -86,14 +86,6 @@ func (h *Histogram) Update(v float64) { return } bucketIdx := (math.Log10(v) - e10Min) * bucketsPerDecimal - idx := uint(bucketIdx) - if bucketIdx == float64(idx) { - // Edge case for 10^n values, which must go to the lower bucket - // according to Prometheus logic for `le`-based histograms. - idx-- - } - decimalBucketIdx := idx / bucketsPerDecimal - offset := idx % bucketsPerDecimal h.mu.Lock() h.sum += v if bucketIdx < 0 { @@ -101,6 +93,14 @@ func (h *Histogram) Update(v float64) { } else if bucketIdx >= bucketsCount { h.upper++ } else { + idx := uint(bucketIdx) + if bucketIdx == float64(idx) { + // Edge case for 10^n values, which must go to the lower bucket + // according to Prometheus logic for `le`-based histograms. + idx-- + } + decimalBucketIdx := idx / bucketsPerDecimal + offset := idx % bucketsPerDecimal db := h.decimalBuckets[decimalBucketIdx] if db == nil { var b [bucketsPerDecimal]uint64 diff --git a/vendor/modules.txt b/vendor/modules.txt index aa71cdb23..730d17a12 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -14,7 +14,7 @@ github.com/VictoriaMetrics/fastcache github.com/VictoriaMetrics/fasthttp github.com/VictoriaMetrics/fasthttp/fasthttputil github.com/VictoriaMetrics/fasthttp/stackless -# github.com/VictoriaMetrics/metrics v1.15.0 +# github.com/VictoriaMetrics/metrics v1.15.1 github.com/VictoriaMetrics/metrics # github.com/VictoriaMetrics/metricsql v0.12.0 github.com/VictoriaMetrics/metricsql From e5ca8ac0db8e181a5b9c4798c04d92db4be40c49 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 18:39:57 +0200 Subject: [PATCH 15/46] lib/promscrape: add ability to spread scrape targets among multiple vmagent instances Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1084 --- app/vmagent/README.md | 16 ++++++++++++++++ docs/CHANGELOG.md | 1 + docs/vmagent.md | 16 ++++++++++++++++ lib/promscrape/config.go | 18 ++++++++++++++++++ lib/promscrape/scrapework.go | 2 +- 5 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/vmagent/README.md b/app/vmagent/README.md index 145491fcb..09de52a88 100644 --- a/app/vmagent/README.md +++ b/app/vmagent/README.md @@ -34,6 +34,7 @@ to `vmagent` (like the ability to push metrics instead of pulling them). We did are buffered at `-remoteWrite.tmpDataPath`. The buffered metrics are sent to remote storage as soon as connection to remote storage is recovered. The maximum disk usage for the buffer can be limited with `-remoteWrite.maxDiskUsagePerURL`. * Uses lower amounts of RAM, CPU, disk IO and network bandwidth compared to Prometheus. +* Scrape targets can be spread among multiple `vmagent` instances when big number of targets must be scraped. See [these docs](#scraping-big-number-of-targets) for details. ## Quick Start @@ -227,6 +228,21 @@ Read more about relabeling in the following articles: * [relabel_configs vs metric_relabel_configs](https://www.robustperception.io/relabel_configs-vs-metric_relabel_configs) +## Scraping big number of targets + +A single `vmagent` instance can scrape tens of thousands of scrape targets. Sometimes this isn't enough due to limitations on CPU, network, RAM, etc. +In this case scrape targets can be split among multiple `vmagent` instances (aka `vmagent` clustering). +Each `vmagent` instance in the cluster must have identical configs, including identical `-promscrape.config` files, except of a single command-line flag: +`-promscrape.cluster.memberNum`. The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. +The number of `vmagent` instances in the cluster must be passed to `-promscrape.cluster.membersCount` command-line flag. For example, the following commands +spread scrape targets among a cluster of two `vmagent` instances: + +``` +/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 +/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 +``` + + ## Monitoring `vmagent` exports various metrics in Prometheus exposition format at `http://vmagent-host:8429/metrics` page. It is recommended setting up regular scraping of this page diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 0433298e3..0e9b6f695 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -11,6 +11,7 @@ * `process_io_write_syscalls_total` - the number of write syscalls such as write and pwrite * `process_io_storage_read_bytes_total` - the number of bytes read from storage layer * `process_io_storage_written_bytes_total` - the number of bytes written to storage layer +* FEATURE: vmagent: add ability to spread scrape targets among multiple `vmagent` instances. See [these docs](https://victoriametrics.github.io/vmagent.html#scraping-big-number-of-targets) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1084) for details. * FEATURE: vmagent: use watch API for Kuberntes service discovery. This should reduce load on Kuberntes API server when it tracks big number of objects (for example, 10K pods). This should also reduce the time needed for k8s targets discovery. * FEATURE: vmagent: export `vm_promscrape_target_relabel_duration_seconds` metric, which can be used for monitoring the time spend on relabeling for discovered targets. * FEATURE: vmagent: optimize [relabeling](https://victoriametrics.github.io/vmagent.html#relabeling) performance for common cases. diff --git a/docs/vmagent.md b/docs/vmagent.md index 145491fcb..09de52a88 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -34,6 +34,7 @@ to `vmagent` (like the ability to push metrics instead of pulling them). We did are buffered at `-remoteWrite.tmpDataPath`. The buffered metrics are sent to remote storage as soon as connection to remote storage is recovered. The maximum disk usage for the buffer can be limited with `-remoteWrite.maxDiskUsagePerURL`. * Uses lower amounts of RAM, CPU, disk IO and network bandwidth compared to Prometheus. +* Scrape targets can be spread among multiple `vmagent` instances when big number of targets must be scraped. See [these docs](#scraping-big-number-of-targets) for details. ## Quick Start @@ -227,6 +228,21 @@ Read more about relabeling in the following articles: * [relabel_configs vs metric_relabel_configs](https://www.robustperception.io/relabel_configs-vs-metric_relabel_configs) +## Scraping big number of targets + +A single `vmagent` instance can scrape tens of thousands of scrape targets. Sometimes this isn't enough due to limitations on CPU, network, RAM, etc. +In this case scrape targets can be split among multiple `vmagent` instances (aka `vmagent` clustering). +Each `vmagent` instance in the cluster must have identical configs, including identical `-promscrape.config` files, except of a single command-line flag: +`-promscrape.cluster.memberNum`. The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. +The number of `vmagent` instances in the cluster must be passed to `-promscrape.cluster.membersCount` command-line flag. For example, the following commands +spread scrape targets among a cluster of two `vmagent` instances: + +``` +/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 +/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 +``` + + ## Monitoring `vmagent` exports various metrics in Prometheus exposition format at `http://vmagent-host:8429/metrics` page. It is recommended setting up regular scraping of this page diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index ceeb531fc..678eda27a 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -12,6 +12,7 @@ import ( "sync" "time" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup" "github.com/VictoriaMetrics/VictoriaMetrics/lib/envtemplate" "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" @@ -29,6 +30,7 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discovery/openstack" "github.com/VictoriaMetrics/VictoriaMetrics/lib/proxy" "github.com/VictoriaMetrics/metrics" + xxhash "github.com/cespare/xxhash/v2" "gopkg.in/yaml.v2" ) @@ -42,6 +44,11 @@ var ( dropOriginalLabels = flag.Bool("promscrape.dropOriginalLabels", false, "Whether to drop original labels for scrape targets at /targets and /api/v1/targets pages. "+ "This may be needed for reducing memory usage when original labels for big number of scrape targets occupy big amounts of memory. "+ "Note that this reduces debuggability for improper per-target relabeling configs") + clusterMembersCount = flag.Int("promscrape.cluster.membersCount", 0, "The number of members in a cluster of scrapers. "+ + "Each member must have an unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . "+ + "Each member then scrapes roughly 1/N of all the targets. By default cluster scraping is disabled, i.e. a single scraper scrapes all the targets") + clusterMemberNum = flag.Int("promscrape.cluster.memberNum", 0, "The number of number in the cluster of scrapers. "+ + "It must be an unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster") ) // Config represents essential parts from Prometheus config defined at https://prometheus.io/docs/prometheus/latest/configuration/configuration/ @@ -714,6 +721,9 @@ func (stc *StaticConfig) appendScrapeWork(dst []*ScrapeWork, swc *scrapeWorkConf func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { key := getScrapeWorkKey(extraLabels, metaLabels) + if needSkipScrapeWork(key) { + return nil, nil + } if sw := swc.cache.Get(key); sw != nil { return sw, nil } @@ -731,6 +741,14 @@ func getScrapeWorkKey(extraLabels, metaLabels map[string]string) string { return string(b) } +func needSkipScrapeWork(key string) bool { + if *clusterMembersCount <= 0 { + return false + } + h := int(xxhash.Sum64(bytesutil.ToUnsafeBytes(key))) + return (h % *clusterMembersCount) != *clusterMemberNum +} + func appendSortedKeyValuePairs(dst []byte, m map[string]string) []byte { keys := make([]string, 0, len(m)) for k := range m { diff --git a/lib/promscrape/scrapework.go b/lib/promscrape/scrapework.go index 313734d6b..558f3e8b5 100644 --- a/lib/promscrape/scrapework.go +++ b/lib/promscrape/scrapework.go @@ -183,7 +183,7 @@ func (sw *scrapeWork) run(stopCh <-chan struct{}) { // This also makes consistent scrape times across restarts // for a target with the same ScrapeURL and labels. key := fmt.Sprintf("ScrapeURL=%s, Labels=%s", sw.Config.ScrapeURL, sw.Config.LabelsString()) - h := uint32(xxhash.Sum64([]byte(key))) + h := uint32(xxhash.Sum64(bytesutil.ToUnsafeBytes(key))) randSleep = uint64(float64(scrapeInterval) * (float64(h) / (1 << 32))) sleepOffset := uint64(time.Now().UnixNano()) % uint64(scrapeInterval) if randSleep < sleepOffset { From 9fc7726d848893d4542f44ef4c1becc208fd5666 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 19:21:30 +0200 Subject: [PATCH 16/46] lib/httpserver: make sure the gzipResponseWriter.Write() is called on Flush() and Close() calls This should fix the `http: superfluous response.WriteHeader call` issue See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078 --- docs/CHANGELOG.md | 1 + lib/httpserver/httpserver.go | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 0e9b6f695..8612c0b17 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -26,6 +26,7 @@ * BUGFIX: vmselect: do not cache partial query results on timeout when receiving data from `vmstorage` nodes. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1085 * BUGFIX: properly handle `stale NFS file handle` error. * BUGFIX: properly cache query results when `extra_label` query arg is used. Previously the cached results could clash for different `extra_label` values. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1095 +* BUGFIX: fix `http: superfluous response.WriteHeader call` issue. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078 # [v1.54.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.54.1) diff --git a/lib/httpserver/httpserver.go b/lib/httpserver/httpserver.go index fe1a4c556..189e5fe3d 100644 --- a/lib/httpserver/httpserver.go +++ b/lib/httpserver/httpserver.go @@ -328,9 +328,9 @@ func maybeGzipResponseWriter(w http.ResponseWriter, r *http.Request) http.Respon zw := getGzipWriter(w) bw := getBufioWriter(zw) zrw := &gzipResponseWriter{ - ResponseWriter: w, - zw: zw, - bw: bw, + rw: w, + zw: zw, + bw: bw, } return zrw } @@ -376,7 +376,7 @@ func putGzipWriter(zw *gzip.Writer) { var gzipWriterPool sync.Pool type gzipResponseWriter struct { - http.ResponseWriter + rw http.ResponseWriter zw *gzip.Writer bw *bufio.Writer statusCode int @@ -385,6 +385,12 @@ type gzipResponseWriter struct { disableCompression bool } +// Implements http.ResponseWriter.Header method. +func (zrw *gzipResponseWriter) Header() http.Header { + return zrw.rw.Header() +} + +// Implements http.ResponseWriter.Write method. func (zrw *gzipResponseWriter) Write(p []byte) (int, error) { if !zrw.firstWriteDone { h := zrw.Header() @@ -407,11 +413,12 @@ func (zrw *gzipResponseWriter) Write(p []byte) (int, error) { zrw.firstWriteDone = true } if zrw.disableCompression { - return zrw.ResponseWriter.Write(p) + return zrw.rw.Write(p) } return zrw.bw.Write(p) } +// Implements http.ResponseWriter.WriteHeader method. func (zrw *gzipResponseWriter) WriteHeader(statusCode int) { zrw.statusCode = statusCode } @@ -420,11 +427,14 @@ func (zrw *gzipResponseWriter) writeHeader() { if zrw.statusCode == 0 { zrw.statusCode = http.StatusOK } - zrw.ResponseWriter.WriteHeader(zrw.statusCode) + zrw.rw.WriteHeader(zrw.statusCode) } // Implements http.Flusher func (zrw *gzipResponseWriter) Flush() { + if !zrw.firstWriteDone { + zrw.Write(nil) + } if !zrw.disableCompression { if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) { logger.Warnf("gzipResponseWriter.Flush (buffer): %s", err) @@ -433,15 +443,14 @@ func (zrw *gzipResponseWriter) Flush() { logger.Warnf("gzipResponseWriter.Flush (gzip): %s", err) } } - if fw, ok := zrw.ResponseWriter.(http.Flusher); ok { + if fw, ok := zrw.rw.(http.Flusher); ok { fw.Flush() } } func (zrw *gzipResponseWriter) Close() error { if !zrw.firstWriteDone { - zrw.writeHeader() - return nil + zrw.Write(nil) } zrw.Flush() var err error From 1da1d502a8eaeb6666d42f6e47b347ce94076a88 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 19:31:44 +0200 Subject: [PATCH 17/46] docs/CHANGELOG.md: mention about https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074 --- docs/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 8612c0b17..5ab59d283 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -27,6 +27,7 @@ * BUGFIX: properly handle `stale NFS file handle` error. * BUGFIX: properly cache query results when `extra_label` query arg is used. Previously the cached results could clash for different `extra_label` values. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1095 * BUGFIX: fix `http: superfluous response.WriteHeader call` issue. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078 +* BUGFIX: fix arm64 builds due to the issue in `github.com/golang/snappy`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074 # [v1.54.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.54.1) From 2b53add6b2826cfababce3a1513ed5d716316d1c Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 19:40:16 +0200 Subject: [PATCH 18/46] app/vmselect/querystats: show the number of matching queries in the top by average duration and in the top by summary duration This should help debugging slow queries. --- app/vmselect/querystats/querystats.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/app/vmselect/querystats/querystats.go b/app/vmselect/querystats/querystats.go index 8c4a92b81..389211ae9 100644 --- a/app/vmselect/querystats/querystats.go +++ b/app/vmselect/querystats/querystats.go @@ -89,7 +89,7 @@ func (qst *queryStatsTracker) writeJSONQueryStats(w io.Writer, topN int, maxLife fmt.Fprintf(w, `],"topByAvgDuration":[`) topByAvgDuration := qst.getTopByAvgDuration(topN, maxLifetime) for i, r := range topByAvgDuration { - fmt.Fprintf(w, `{"query":%q,"timeRangeSeconds":%d,"avgDurationSeconds":%.3f}`, r.query, r.timeRangeSecs, r.duration.Seconds()) + fmt.Fprintf(w, `{"query":%q,"timeRangeSeconds":%d,"avgDurationSeconds":%.3f,"count":%d}`, r.query, r.timeRangeSecs, r.duration.Seconds(), r.count) if i+1 < len(topByAvgDuration) { fmt.Fprintf(w, `,`) } @@ -97,7 +97,7 @@ func (qst *queryStatsTracker) writeJSONQueryStats(w io.Writer, topN int, maxLife fmt.Fprintf(w, `],"topBySumDuration":[`) topBySumDuration := qst.getTopBySumDuration(topN, maxLifetime) for i, r := range topBySumDuration { - fmt.Fprintf(w, `{"query":%q,"timeRangeSeconds":%d,"sumDurationSeconds":%.3f}`, r.query, r.timeRangeSecs, r.duration.Seconds()) + fmt.Fprintf(w, `{"query":%q,"timeRangeSeconds":%d,"sumDurationSeconds":%.3f,"count":%d}`, r.query, r.timeRangeSecs, r.duration.Seconds(), r.count) if i+1 < len(topBySumDuration) { fmt.Fprintf(w, `,`) } @@ -202,6 +202,7 @@ func (qst *queryStatsTracker) getTopByAvgDuration(topN int, maxLifetime time.Dur query: k.query, timeRangeSecs: k.timeRangeSecs, duration: ks.sum / time.Duration(ks.count), + count: ks.count, }) } sort.Slice(a, func(i, j int) bool { @@ -217,26 +218,35 @@ type queryStatByDuration struct { query string timeRangeSecs int64 duration time.Duration + count int } func (qst *queryStatsTracker) getTopBySumDuration(topN int, maxLifetime time.Duration) []queryStatByDuration { currentTime := time.Now() qst.mu.Lock() - m := make(map[queryStatKey]time.Duration) + type countDuration struct { + count int + sum time.Duration + } + m := make(map[queryStatKey]countDuration) for _, r := range qst.a { if r.matches(currentTime, maxLifetime) { k := r.key() - m[k] = m[k] + r.duration + kd := m[k] + kd.count++ + kd.sum += r.duration + m[k] = kd } } qst.mu.Unlock() var a []queryStatByDuration - for k, d := range m { + for k, kd := range m { a = append(a, queryStatByDuration{ query: k.query, timeRangeSecs: k.timeRangeSecs, - duration: d, + duration: kd.sum, + count: kd.count, }) } sort.Slice(a, func(i, j int) bool { From 8d021b73b5154fde9313e53077a0e8c158665f05 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 21:59:32 +0200 Subject: [PATCH 19/46] docs/vmbackup.md: clarify docs on `vmagent` clustering --- app/vmagent/README.md | 8 ++++---- docs/vmagent.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/vmagent/README.md b/app/vmagent/README.md index 09de52a88..fa613a019 100644 --- a/app/vmagent/README.md +++ b/app/vmagent/README.md @@ -232,14 +232,14 @@ Read more about relabeling in the following articles: A single `vmagent` instance can scrape tens of thousands of scrape targets. Sometimes this isn't enough due to limitations on CPU, network, RAM, etc. In this case scrape targets can be split among multiple `vmagent` instances (aka `vmagent` clustering). -Each `vmagent` instance in the cluster must have identical configs, including identical `-promscrape.config` files, except of a single command-line flag: -`-promscrape.cluster.memberNum`. The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. +Each `vmagent` instance in the cluster must use identical `-promscrape.config` files with distinct `-promscrape.cluster.memberNum` values. +The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. The number of `vmagent` instances in the cluster must be passed to `-promscrape.cluster.membersCount` command-line flag. For example, the following commands spread scrape targets among a cluster of two `vmagent` instances: ``` -/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 -/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 +/path/to/vmagent -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 -promscrape.config=/path/to/config.yml ... +/path/to/vmagent -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 -promscrape.config=/path/to/config.yml ... ``` diff --git a/docs/vmagent.md b/docs/vmagent.md index 09de52a88..fa613a019 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -232,14 +232,14 @@ Read more about relabeling in the following articles: A single `vmagent` instance can scrape tens of thousands of scrape targets. Sometimes this isn't enough due to limitations on CPU, network, RAM, etc. In this case scrape targets can be split among multiple `vmagent` instances (aka `vmagent` clustering). -Each `vmagent` instance in the cluster must have identical configs, including identical `-promscrape.config` files, except of a single command-line flag: -`-promscrape.cluster.memberNum`. The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. +Each `vmagent` instance in the cluster must use identical `-promscrape.config` files with distinct `-promscrape.cluster.memberNum` values. +The flag value must be in the range `0 ... N-1`, where `N` is the number of `vmagent` instances in the cluster. The number of `vmagent` instances in the cluster must be passed to `-promscrape.cluster.membersCount` command-line flag. For example, the following commands spread scrape targets among a cluster of two `vmagent` instances: ``` -/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 -/path/to/vmagent ... -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 +/path/to/vmagent -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=0 -promscrape.config=/path/to/config.yml ... +/path/to/vmagent -promscrape.cluster.membersCount=2 -promscrape.cluster.memberNum=1 -promscrape.config=/path/to/config.yml ... ``` From 530e9904af948bfa8450636ba70fcecc01982f60 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 28 Feb 2021 22:29:34 +0200 Subject: [PATCH 20/46] lib/promscrape: reduce CPU usage an memory allocations when constructing scrapeWorkKey --- lib/promscrape/config.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 678eda27a..59d49b832 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -7,7 +7,6 @@ import ( "net/url" "path/filepath" "sort" - "strconv" "strings" "sync" "time" @@ -720,25 +719,29 @@ func (stc *StaticConfig) appendScrapeWork(dst []*ScrapeWork, swc *scrapeWorkConf } func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { - key := getScrapeWorkKey(extraLabels, metaLabels) - if needSkipScrapeWork(key) { + bb := scrapeWorkKeyBufPool.Get() + defer scrapeWorkKeyBufPool.Put(bb) + bb.B = appendScrapeWorkKey(bb.B[:0], extraLabels, metaLabels) + keyStrUnsafe := bytesutil.ToUnsafeString(bb.B) + if needSkipScrapeWork(keyStrUnsafe) { return nil, nil } - if sw := swc.cache.Get(key); sw != nil { + if sw := swc.cache.Get(keyStrUnsafe); sw != nil { return sw, nil } sw, err := swc.getScrapeWorkReal(target, extraLabels, metaLabels) if err != nil { - swc.cache.Set(key, sw) + swc.cache.Set(string(bb.B), sw) } return sw, err } -func getScrapeWorkKey(extraLabels, metaLabels map[string]string) string { - var b []byte - b = appendSortedKeyValuePairs(b, extraLabels) - b = appendSortedKeyValuePairs(b, metaLabels) - return string(b) +var scrapeWorkKeyBufPool bytesutil.ByteBufferPool + +func appendScrapeWorkKey(dst []byte, extraLabels, metaLabels map[string]string) []byte { + dst = appendSortedKeyValuePairs(dst, extraLabels) + dst = appendSortedKeyValuePairs(dst, metaLabels) + return dst } func needSkipScrapeWork(key string) bool { @@ -756,9 +759,10 @@ func appendSortedKeyValuePairs(dst []byte, m map[string]string) []byte { } sort.Strings(keys) for _, k := range keys { - dst = strconv.AppendQuote(dst, k) - dst = append(dst, ':') - dst = strconv.AppendQuote(dst, m[k]) + // Do not use strconv.AppendQuote, since it is slow according to CPU profile. + dst = append(dst, k...) + dst = append(dst, '=') + dst = append(dst, m[k]...) dst = append(dst, ',') } dst = append(dst, '\n') From cb943f35c7a8b06016688845d2132671d13f00fe Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 00:28:20 +0200 Subject: [PATCH 21/46] app/vmagent: remove data race when applying rate limits to `-remoteWrite.url` with multiple queues --- app/vmagent/remotewrite/client.go | 7 +++++++ docs/CHANGELOG.md | 1 + 2 files changed, 8 insertions(+) diff --git a/app/vmagent/remotewrite/client.go b/app/vmagent/remotewrite/client.go index d8cbfd3c8..7c0b0f21b 100644 --- a/app/vmagent/remotewrite/client.go +++ b/app/vmagent/remotewrite/client.go @@ -299,6 +299,9 @@ again: type rateLimiter struct { perSecondLimit int64 + // mu protects budget and deadline from concurrent access. + mu sync.Mutex + // The current budget. It is increased by perSecondLimit every second. budget int64 @@ -313,6 +316,10 @@ func (rl *rateLimiter) register(dataLen int, stopCh <-chan struct{}) { if limit <= 0 { return } + + rl.mu.Lock() + defer rl.mu.Unlock() + for rl.budget <= 0 { now := time.Now() if d := rl.deadline.Sub(now); d > 0 { diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 5ab59d283..122efd069 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -20,6 +20,7 @@ * FEATURE: vmagent: initial support for Windows build with `CGO_ENABLED=0 GOOS=windows go build -mod=vendor ./app/vmagent`. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/70) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1036). * FEATURE: vmalert: properly process query params in `-datasource.url` and `-remoteRead.url` command-line flags. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1087) for details. +* BUGFIX: vmagent: properly apply `-remoteWrite.rateLimit` when `-remoteWrite.queues` is greater than 1. Previously there was a data race, which could prevent from proper rate limiting. * BUGFIX: vmagent: properly perform graceful shutdown on `SIGINT` and `SIGTERM` signals. The graceful shutdown has been broken in `v1.54.0`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1065 * BUGFIX: reduce the probability of `duplicate time series` errors when querying Kubernetes metrics. * BUGFIX: properly calculate `histogram_quantile()` over time series with only a single non-zero bucket with `{le="+Inf"}`. Previously `NaN` was returned, now the value for the last bucket before `{le="+Inf"}` is returned like Prometheus does. From 7f15cd7161421fd82ee08a518b59d94c816433c5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 00:34:10 +0200 Subject: [PATCH 22/46] lib/httpserver: make `make errcheck` happy after the commit 9fc7726d848893d4542f44ef4c1becc208fd5666 --- lib/httpserver/httpserver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/httpserver/httpserver.go b/lib/httpserver/httpserver.go index 189e5fe3d..c85dfbc96 100644 --- a/lib/httpserver/httpserver.go +++ b/lib/httpserver/httpserver.go @@ -433,7 +433,7 @@ func (zrw *gzipResponseWriter) writeHeader() { // Implements http.Flusher func (zrw *gzipResponseWriter) Flush() { if !zrw.firstWriteDone { - zrw.Write(nil) + _, _ = zrw.Write(nil) } if !zrw.disableCompression { if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) { @@ -450,7 +450,7 @@ func (zrw *gzipResponseWriter) Flush() { func (zrw *gzipResponseWriter) Close() error { if !zrw.firstWriteDone { - zrw.Write(nil) + _, _ = zrw.Write(nil) } zrw.Flush() var err error From 369f01c738eb88e6af9af505505d7d5a3570e57d Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 00:58:31 +0200 Subject: [PATCH 23/46] app/vmagent/remotewrite: fix rate limiting logic for `-remoteWrite.url` --- app/vmagent/remotewrite/client.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/vmagent/remotewrite/client.go b/app/vmagent/remotewrite/client.go index 7c0b0f21b..767ff549b 100644 --- a/app/vmagent/remotewrite/client.go +++ b/app/vmagent/remotewrite/client.go @@ -321,8 +321,7 @@ func (rl *rateLimiter) register(dataLen int, stopCh <-chan struct{}) { defer rl.mu.Unlock() for rl.budget <= 0 { - now := time.Now() - if d := rl.deadline.Sub(now); d > 0 { + if d := time.Until(rl.deadline); d > 0 { rl.limitReached.Inc() t := timerpool.Get(d) select { @@ -334,7 +333,7 @@ func (rl *rateLimiter) register(dataLen int, stopCh <-chan struct{}) { } } rl.budget += limit - rl.deadline = now.Add(time.Second) + rl.deadline = time.Now().Add(time.Second) } rl.budget -= int64(dataLen) } From 732e729ef938d0e9359fc267dec1a33c9f441982 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 01:41:53 +0200 Subject: [PATCH 24/46] docs/CHANGELOG.md: mention the issue related to using Kubernetes watch API for service discovery --- docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 122efd069..f433e4294 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -12,7 +12,7 @@ * `process_io_storage_read_bytes_total` - the number of bytes read from storage layer * `process_io_storage_written_bytes_total` - the number of bytes written to storage layer * FEATURE: vmagent: add ability to spread scrape targets among multiple `vmagent` instances. See [these docs](https://victoriametrics.github.io/vmagent.html#scraping-big-number-of-targets) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1084) for details. -* FEATURE: vmagent: use watch API for Kuberntes service discovery. This should reduce load on Kuberntes API server when it tracks big number of objects (for example, 10K pods). This should also reduce the time needed for k8s targets discovery. +* FEATURE: vmagent: use watch API for Kuberntes service discovery. This should reduce load on Kuberntes API server when it tracks big number of objects (for example, 10K pods). This should also reduce the time needed for k8s targets discovery. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1057) for details. * FEATURE: vmagent: export `vm_promscrape_target_relabel_duration_seconds` metric, which can be used for monitoring the time spend on relabeling for discovered targets. * FEATURE: vmagent: optimize [relabeling](https://victoriametrics.github.io/vmagent.html#relabeling) performance for common cases. * FEATURE: add `increase_pure(m[d])` function to MetricsQL. It works the same as `increase(m[d])` except of various edge cases. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/962) for details. From 4e3cfe8461508896ee6f4263fdecce919a1b551a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 11:50:39 +0200 Subject: [PATCH 25/46] app/vmagent/remotewrite: clarify `-remoteWrite.flushInterval` flag description --- app/vmagent/remotewrite/pendingseries.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/vmagent/remotewrite/pendingseries.go b/app/vmagent/remotewrite/pendingseries.go index a1660bc47..bcab93fb1 100644 --- a/app/vmagent/remotewrite/pendingseries.go +++ b/app/vmagent/remotewrite/pendingseries.go @@ -19,8 +19,7 @@ import ( var ( flushInterval = flag.Duration("remoteWrite.flushInterval", time.Second, "Interval for flushing the data to remote storage. "+ - "Higher value reduces network bandwidth usage at the cost of delayed push of scraped data to remote storage. "+ - "Minimum supported interval is 1 second") + "This option takes effect only when less than 10K data points per second are pushed to -remoteWrite.url") maxUnpackedBlockSize = flagutil.NewBytes("remoteWrite.maxBlockSize", 8*1024*1024, "The maximum size in bytes of unpacked request to send to remote storage. "+ "It shouldn't exceed -maxInsertRequestSize from VictoriaMetrics") ) From e84153d5caf5e9b9dcc0b7f21c1759507dfc921f Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 12:05:45 +0200 Subject: [PATCH 26/46] lib/promscrape: add vm_promscrape_scrapework_cache_* metrics for tracking ScrapeWork cache effectiveness --- lib/promscrape/config.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 59d49b832..28e5959c6 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -566,6 +566,7 @@ func newScrapeWorkCache() *scrapeWorkCache { } func (swc *scrapeWorkCache) Get(key string) *ScrapeWork { + scrapeWorkCacheRequests.Inc() currentTime := fasttime.UnixTimestamp() swc.mu.Lock() swe := swc.m[key] @@ -576,9 +577,15 @@ func (swc *scrapeWorkCache) Get(key string) *ScrapeWork { if swe == nil { return nil } + scrapeWorkCacheHits.Inc() return swe.sw } +var ( + scrapeWorkCacheRequests = metrics.NewCounter(`vm_promscrape_scrapework_cache_requests_total`) + scrapeWorkCacheHits = metrics.NewCounter(`vm_promscrape_scrapework_cache_hits_total`) +) + func (swc *scrapeWorkCache) Set(key string, sw *ScrapeWork) { currentTime := fasttime.UnixTimestamp() swc.mu.Lock() From f5d77a7081c2c6e967ad0edfbd8c2ffe480b7821 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 12:12:56 +0200 Subject: [PATCH 27/46] lib/promscrape: typo fix, which prevented from caching ScrapeWork entries --- lib/promscrape/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 28e5959c6..dc32daf2a 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -737,7 +737,7 @@ func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabel return sw, nil } sw, err := swc.getScrapeWorkReal(target, extraLabels, metaLabels) - if err != nil { + if err == nil { swc.cache.Set(string(bb.B), sw) } return sw, err From 3792ea40651b4d24c9fa21bdde1b65ba61e39fb6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 01:11:03 +0200 Subject: [PATCH 28/46] .github/workflows/main.yml: update Go version from v1.15 to v1.16 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 63e9846b9..445254bcd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Go uses: actions/setup-go@main with: - go-version: 1.15 + go-version: 1.16 id: go - name: Dependencies run: | From e32ad9e9237fab875e29c9d85d76bc86c06212d6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 12:29:09 +0200 Subject: [PATCH 29/46] lib/promscrape: use target arg in ScrapeWork cache --- lib/promscrape/config.go | 6 ++++-- lib/promscrape/config_test.go | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index dc32daf2a..1d08a0441 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -728,7 +728,7 @@ func (stc *StaticConfig) appendScrapeWork(dst []*ScrapeWork, swc *scrapeWorkConf func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { bb := scrapeWorkKeyBufPool.Get() defer scrapeWorkKeyBufPool.Put(bb) - bb.B = appendScrapeWorkKey(bb.B[:0], extraLabels, metaLabels) + bb.B = appendScrapeWorkKey(bb.B[:0], target, extraLabels, metaLabels) keyStrUnsafe := bytesutil.ToUnsafeString(bb.B) if needSkipScrapeWork(keyStrUnsafe) { return nil, nil @@ -745,7 +745,9 @@ func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabel var scrapeWorkKeyBufPool bytesutil.ByteBufferPool -func appendScrapeWorkKey(dst []byte, extraLabels, metaLabels map[string]string) []byte { +func appendScrapeWorkKey(dst []byte, target string, extraLabels, metaLabels map[string]string) []byte { + dst = append(dst, target...) + dst = append(dst, ',') dst = appendSortedKeyValuePairs(dst, extraLabels) dst = appendSortedKeyValuePairs(dst, metaLabels) return dst diff --git a/lib/promscrape/config_test.go b/lib/promscrape/config_test.go index f2273ccc4..6ca1cf993 100644 --- a/lib/promscrape/config_test.go +++ b/lib/promscrape/config_test.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "fmt" "reflect" + "strconv" "testing" "time" @@ -444,6 +445,11 @@ func resetNonEssentialFields(sws []*ScrapeWork) { } } +// String returns human-readable representation for sw. +func (sw *ScrapeWork) String() string { + return strconv.Quote(sw.key()) +} + func TestGetFileSDScrapeWorkSuccess(t *testing.T) { f := func(data string, expectedSws []*ScrapeWork) { t.Helper() @@ -463,7 +469,7 @@ func TestGetFileSDScrapeWorkSuccess(t *testing.T) { } } if !reflect.DeepEqual(sws, expectedSws) { - t.Fatalf("unexpected scrapeWork; got\n%v\nwant\n%v", sws, expectedSws) + t.Fatalf("unexpected scrapeWork; got\n%+v\nwant\n%+v", sws, expectedSws) } } f(` @@ -608,7 +614,7 @@ func TestGetStaticScrapeWorkSuccess(t *testing.T) { } resetNonEssentialFields(sws) if !reflect.DeepEqual(sws, expectedSws) { - t.Fatalf("unexpected scrapeWork; got\n%v\nwant\n%v", sws, expectedSws) + t.Fatalf("unexpected scrapeWork; got\n%+v\nwant\n%+v", sws, expectedSws) } } f(``, nil) From 62ebf5c88ec1254422c43005eb6ac44273c98848 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 14:13:56 +0200 Subject: [PATCH 30/46] lib/promscrape: explicitly stop and cleanup service discovery routines when new config is read from `-promscrape.config` This should reduce memory usage when `-promscrape.config` file frequently changes --- lib/promscrape/config.go | 42 +++++++++++- lib/promscrape/discovery/consul/api.go | 4 ++ lib/promscrape/discovery/consul/consul.go | 10 +++ lib/promscrape/discovery/consul/watch.go | 47 +++++++------- lib/promscrape/discovery/dns/dns.go | 5 ++ .../discovery/dockerswarm/dockerswarm.go | 5 ++ lib/promscrape/discovery/ec2/ec2.go | 5 ++ lib/promscrape/discovery/eureka/eureka.go | 5 ++ lib/promscrape/discovery/gce/gce.go | 5 ++ lib/promscrape/discovery/kubernetes/api.go | 65 +++++++++++++------ .../discovery/kubernetes/kubernetes.go | 10 +++ .../discovery/openstack/openstack.go | 5 ++ lib/promscrape/discoveryutils/config_map.go | 59 +++++++---------- lib/promscrape/scraper.go | 3 + 14 files changed, 190 insertions(+), 80 deletions(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 1d08a0441..5318bd9af 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -59,6 +59,15 @@ type Config struct { baseDir string } +func (cfg *Config) mustStop() { + startTime := time.Now() + logger.Infof("stopping service discovery routines...") + for i := range cfg.ScrapeConfigs { + cfg.ScrapeConfigs[i].mustStop() + } + logger.Infof("stopped service discovery routines in %.3f seconds", time.Since(startTime).Seconds()) +} + // GlobalConfig represents essential parts for `global` section of Prometheus config. // // See https://prometheus.io/docs/prometheus/latest/configuration/configuration/ @@ -91,7 +100,7 @@ type ScrapeConfig struct { OpenStackSDConfigs []openstack.SDConfig `yaml:"openstack_sd_configs,omitempty"` ConsulSDConfigs []consul.SDConfig `yaml:"consul_sd_configs,omitempty"` EurekaSDConfigs []eureka.SDConfig `yaml:"eureka_sd_configs,omitempty"` - DockerSwarmConfigs []dockerswarm.SDConfig `yaml:"dockerswarm_sd_configs,omitempty"` + DockerSwarmSDConfigs []dockerswarm.SDConfig `yaml:"dockerswarm_sd_configs,omitempty"` DNSSDConfigs []dns.SDConfig `yaml:"dns_sd_configs,omitempty"` EC2SDConfigs []ec2.SDConfig `yaml:"ec2_sd_configs,omitempty"` GCESDConfigs []gce.SDConfig `yaml:"gce_sd_configs,omitempty"` @@ -109,6 +118,33 @@ type ScrapeConfig struct { swc *scrapeWorkConfig } +func (sc *ScrapeConfig) mustStop() { + for i := range sc.KubernetesSDConfigs { + sc.KubernetesSDConfigs[i].MustStop() + } + for i := range sc.OpenStackSDConfigs { + sc.OpenStackSDConfigs[i].MustStop() + } + for i := range sc.ConsulSDConfigs { + sc.ConsulSDConfigs[i].MustStop() + } + for i := range sc.EurekaSDConfigs { + sc.EurekaSDConfigs[i].MustStop() + } + for i := range sc.DockerSwarmSDConfigs { + sc.DockerSwarmSDConfigs[i].MustStop() + } + for i := range sc.DNSSDConfigs { + sc.DNSSDConfigs[i].MustStop() + } + for i := range sc.EC2SDConfigs { + sc.EC2SDConfigs[i].MustStop() + } + for i := range sc.GCESDConfigs { + sc.GCESDConfigs[i].MustStop() + } +} + // FileSDConfig represents file-based service discovery config. // // See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config @@ -259,8 +295,8 @@ func (cfg *Config) getDockerSwarmSDScrapeWork(prev []*ScrapeWork) []*ScrapeWork sc := &cfg.ScrapeConfigs[i] dstLen := len(dst) ok := true - for j := range sc.DockerSwarmConfigs { - sdc := &sc.DockerSwarmConfigs[j] + for j := range sc.DockerSwarmSDConfigs { + sdc := &sc.DockerSwarmSDConfigs[j] var okLocal bool dst, okLocal = appendSDScrapeWork(dst, sdc, cfg.baseDir, sc.swc, "dockerswarm_sd_config") if ok { diff --git a/lib/promscrape/discovery/consul/api.go b/lib/promscrape/discovery/consul/api.go index eec5a3c9a..8927e6445 100644 --- a/lib/promscrape/discovery/consul/api.go +++ b/lib/promscrape/discovery/consul/api.go @@ -20,6 +20,10 @@ type apiConfig struct { consulWatcher *consulWatcher } +func (ac *apiConfig) mustStop() { + ac.consulWatcher.mustStop() +} + var configMap = discoveryutils.NewConfigMap() func getAPIConfig(sdc *SDConfig, baseDir string) (*apiConfig, error) { diff --git a/lib/promscrape/discovery/consul/consul.go b/lib/promscrape/discovery/consul/consul.go index b0e81d062..bc949641a 100644 --- a/lib/promscrape/discovery/consul/consul.go +++ b/lib/promscrape/discovery/consul/consul.go @@ -37,3 +37,13 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { ms := getServiceNodesLabels(cfg) return ms, nil } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + v := configMap.Delete(sdc) + if v != nil { + // v can be nil if GetLabels wasn't called yet. + cfg := v.(*apiConfig) + cfg.mustStop() + } +} diff --git a/lib/promscrape/discovery/consul/watch.go b/lib/promscrape/discovery/consul/watch.go index a85edccaf..06acaedf5 100644 --- a/lib/promscrape/discovery/consul/watch.go +++ b/lib/promscrape/discovery/consul/watch.go @@ -27,12 +27,12 @@ type consulWatcher struct { watchServices []string watchTags []string - // servicesLock protects services and servicesLastAccessTime - servicesLock sync.Mutex - services map[string]*serviceWatcher - servicesLastAccessTime time.Time + // servicesLock protects services + servicesLock sync.Mutex + services map[string]*serviceWatcher - wg sync.WaitGroup + wg sync.WaitGroup + stopCh chan struct{} } type serviceWatcher struct { @@ -55,18 +55,25 @@ func newConsulWatcher(client *discoveryutils.Client, sdc *SDConfig, datacenter s serviceNodesQueryArgs += "&tag=" + url.QueryEscape(tag) } cw := &consulWatcher{ - client: client, - serviceNamesQueryArgs: baseQueryArgs, - serviceNodesQueryArgs: serviceNodesQueryArgs, - watchServices: sdc.Services, - watchTags: sdc.Tags, - services: make(map[string]*serviceWatcher), - servicesLastAccessTime: time.Now(), + client: client, + serviceNamesQueryArgs: baseQueryArgs, + serviceNodesQueryArgs: serviceNodesQueryArgs, + watchServices: sdc.Services, + watchTags: sdc.Tags, + services: make(map[string]*serviceWatcher), + stopCh: make(chan struct{}), } go cw.watchForServicesUpdates() return cw } +func (cw *consulWatcher) mustStop() { + close(cw.stopCh) + // Do not wait for the watcher to stop, since it may take + // up to discoveryutils.BlockingClientReadTimeout to complete. + // TODO: add ability to cancel blocking requests. +} + // watchForServicesUpdates watches for new services and updates it in cw. func (cw *consulWatcher) watchForServicesUpdates() { checkInterval := getCheckInterval() @@ -129,13 +136,12 @@ func (cw *consulWatcher) watchForServicesUpdates() { logger.Infof("started Consul service watcher for %q", clientAddr) f() - for range ticker.C { - cw.servicesLock.Lock() - lastAccessTime := cw.servicesLastAccessTime - cw.servicesLock.Unlock() - if time.Since(lastAccessTime) > 3*checkInterval { - // The given cw is no longer used. Stop all service watchers and exit. - logger.Infof("starting to stop Consul service watchers for %q", clientAddr) + for { + select { + case <-ticker.C: + f() + case <-cw.stopCh: + logger.Infof("stopping Consul service watchers for %q", clientAddr) startTime := time.Now() cw.servicesLock.Lock() for _, sw := range cw.services { @@ -146,8 +152,6 @@ func (cw *consulWatcher) watchForServicesUpdates() { logger.Infof("stopped Consul service watcher for %q in %.3f seconds", clientAddr, time.Since(startTime).Seconds()) return } - - f() } } @@ -236,7 +240,6 @@ func (cw *consulWatcher) getServiceNodesSnapshot() []ServiceNode { for _, sw := range cw.services { sns = append(sns, sw.serviceNodes...) } - cw.servicesLastAccessTime = time.Now() cw.servicesLock.Unlock() return sns } diff --git a/lib/promscrape/discovery/dns/dns.go b/lib/promscrape/discovery/dns/dns.go index 7d330a2d5..829daf700 100644 --- a/lib/promscrape/discovery/dns/dns.go +++ b/lib/promscrape/discovery/dns/dns.go @@ -46,6 +46,11 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { } } +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + // nothing to do +} + func getSRVAddrLabels(ctx context.Context, sdc *SDConfig) []map[string]string { type result struct { name string diff --git a/lib/promscrape/discovery/dockerswarm/dockerswarm.go b/lib/promscrape/discovery/dockerswarm/dockerswarm.go index b58f68fcd..a3cd256ea 100644 --- a/lib/promscrape/discovery/dockerswarm/dockerswarm.go +++ b/lib/promscrape/discovery/dockerswarm/dockerswarm.go @@ -47,3 +47,8 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { return nil, fmt.Errorf("unexpected `role`: %q; must be one of `tasks`, `services` or `nodes`; skipping it", sdc.Role) } } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + configMap.Delete(sdc) +} diff --git a/lib/promscrape/discovery/ec2/ec2.go b/lib/promscrape/discovery/ec2/ec2.go index 6a830e163..40f706246 100644 --- a/lib/promscrape/discovery/ec2/ec2.go +++ b/lib/promscrape/discovery/ec2/ec2.go @@ -42,3 +42,8 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { } return ms, nil } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + configMap.Delete(sdc) +} diff --git a/lib/promscrape/discovery/eureka/eureka.go b/lib/promscrape/discovery/eureka/eureka.go index c9759e6e0..2c2f19f3b 100644 --- a/lib/promscrape/discovery/eureka/eureka.go +++ b/lib/promscrape/discovery/eureka/eureka.go @@ -102,6 +102,11 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { return addInstanceLabels(apps, port), nil } +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + configMap.Delete(sdc) +} + func addInstanceLabels(apps *applications, port int) []map[string]string { var ms []map[string]string for _, app := range apps.Applications { diff --git a/lib/promscrape/discovery/gce/gce.go b/lib/promscrape/discovery/gce/gce.go index 4234c7655..baac5ab64 100644 --- a/lib/promscrape/discovery/gce/gce.go +++ b/lib/promscrape/discovery/gce/gce.go @@ -56,3 +56,8 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { ms := getInstancesLabels(cfg) return ms, nil } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + configMap.Delete(sdc) +} diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 8a384f4d9..97507d75d 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -1,6 +1,7 @@ package kubernetes import ( + "context" "encoding/json" "errors" "flag" @@ -16,7 +17,6 @@ import ( "sync" "time" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils" @@ -30,6 +30,10 @@ type apiConfig struct { aw *apiWatcher } +func (ac *apiConfig) mustStop() { + ac.aw.mustStop() +} + var configMap = discoveryutils.NewConfigMap() func getAPIConfig(sdc *SDConfig, baseDir string) (*apiConfig, error) { @@ -137,18 +141,24 @@ type apiWatcher struct { // Selectors to apply during watch selectors []Selector - // mu protects watchersByURL and lastAccessTime + // mu protects watchersByURL mu sync.Mutex - // a map of watchers keyed by request paths + // a map of watchers keyed by request urls watchersByURL map[string]*urlWatcher - // The last time the apiWatcher was queried for cached objects. - // It is used for stopping unused watchers. - lastAccessTime uint64 + stopFunc func() + stopCtx context.Context + wg sync.WaitGroup +} + +func (aw *apiWatcher) mustStop() { + aw.stopFunc() + aw.wg.Wait() } func newAPIWatcher(client *http.Client, apiServer, authorization string, namespaces []string, selectors []Selector) *apiWatcher { + stopCtx, stopFunc := context.WithCancel(context.Background()) return &apiWatcher{ apiServer: apiServer, authorization: authorization, @@ -158,7 +168,8 @@ func newAPIWatcher(client *http.Client, apiServer, authorization string, namespa watchersByURL: make(map[string]*urlWatcher), - lastAccessTime: fasttime.UnixTimestamp(), + stopFunc: stopFunc, + stopCtx: stopCtx, } } @@ -177,7 +188,6 @@ func (aw *apiWatcher) getLabelsForRole(role string) []map[string]string { } uw.mu.Unlock() } - aw.lastAccessTime = fasttime.UnixTimestamp() aw.mu.Unlock() return ms } @@ -202,7 +212,6 @@ func (aw *apiWatcher) getObjectByRole(role, namespace, name string) object { break } } - aw.lastAccessTime = fasttime.UnixTimestamp() aw.mu.Unlock() return o } @@ -230,8 +239,12 @@ func (aw *apiWatcher) startWatcherForURL(role, apiURL string, parseObject parseO uw.watchersCount.Inc() uw.watchersCreated.Inc() resourceVersion := uw.reloadObjects() + aw.wg.Add(1) go func() { + defer aw.wg.Done() + logger.Infof("started watcher for %q", apiURL) uw.watchForUpdates(resourceVersion) + logger.Infof("stopped watcher for %q", apiURL) uw.mu.Lock() uw.objectsCount.Add(-len(uw.objectsByKey)) uw.objectsRemoved.Add(len(uw.objectsByKey)) @@ -245,16 +258,19 @@ func (aw *apiWatcher) startWatcherForURL(role, apiURL string, parseObject parseO }() } -// needStop returns true if aw wasn't used for long time. +// needStop returns true if aw must be stopped. func (aw *apiWatcher) needStop() bool { - aw.mu.Lock() - defer aw.mu.Unlock() - return fasttime.UnixTimestamp() > aw.lastAccessTime+5*60 + select { + case <-aw.stopCtx.Done(): + return true + default: + return false + } } // doRequest performs http request to the given requestURL. func (aw *apiWatcher) doRequest(requestURL string) (*http.Response, error) { - req, err := http.NewRequest("GET", requestURL, nil) + req, err := http.NewRequestWithContext(aw.stopCtx, "GET", requestURL, nil) if err != nil { logger.Fatalf("cannot create a request for %q: %s", requestURL, err) } @@ -316,10 +332,13 @@ func (aw *apiWatcher) newURLWatcher(role, apiURL string, parseObject parseObject // reloadObjects reloads objects to the latest state and returns resourceVersion for the latest state. func (uw *urlWatcher) reloadObjects() string { + aw := uw.aw requestURL := uw.apiURL - resp, err := uw.aw.doRequest(requestURL) + resp, err := aw.doRequest(requestURL) if err != nil { - logger.Errorf("error when performing a request to %q: %s", requestURL, err) + if !aw.needStop() { + logger.Errorf("error when performing a request to %q: %s", requestURL, err) + } return "" } body, _ := ioutil.ReadAll(resp.Body) @@ -330,12 +349,14 @@ func (uw *urlWatcher) reloadObjects() string { } objectsByKey, metadata, err := uw.parseObjectList(body) if err != nil { - logger.Errorf("cannot parse response from %q: %s", requestURL, err) + if !aw.needStop() { + logger.Errorf("cannot parse response from %q: %s", requestURL, err) + } return "" } labelsByKey := make(map[string][]map[string]string, len(objectsByKey)) for k, o := range objectsByKey { - labelsByKey[k] = o.getTargetLabels(uw.aw) + labelsByKey[k] = o.getTargetLabels(aw) } uw.mu.Lock() uw.objectsRemoved.Add(-len(uw.objectsByKey)) @@ -368,10 +389,8 @@ func (uw *urlWatcher) watchForUpdates(resourceVersion string) { } timeoutSeconds := time.Duration(0.9 * float64(aw.client.Timeout)).Seconds() apiURL += delimiter + "watch=1&timeoutSeconds=" + strconv.Itoa(int(timeoutSeconds)) - logger.Infof("started watcher for %q", apiURL) for { if aw.needStop() { - logger.Infof("stopped unused watcher for %q", apiURL) return } requestURL := apiURL @@ -380,6 +399,9 @@ func (uw *urlWatcher) watchForUpdates(resourceVersion string) { } resp, err := aw.doRequest(requestURL) if err != nil { + if aw.needStop() { + return + } logger.Errorf("error when performing a request to %q: %s", requestURL, err) backoffSleep() resourceVersion = uw.reloadObjects() @@ -402,6 +424,9 @@ func (uw *urlWatcher) watchForUpdates(resourceVersion string) { err = uw.readObjectUpdateStream(resp.Body) _ = resp.Body.Close() if err != nil { + if aw.needStop() { + return + } if !errors.Is(err, io.EOF) { logger.Errorf("error when reading WatchEvent stream from %q: %s", requestURL, err) } diff --git a/lib/promscrape/discovery/kubernetes/kubernetes.go b/lib/promscrape/discovery/kubernetes/kubernetes.go index 504fef616..07c2c00ee 100644 --- a/lib/promscrape/discovery/kubernetes/kubernetes.go +++ b/lib/promscrape/discovery/kubernetes/kubernetes.go @@ -50,3 +50,13 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { return nil, fmt.Errorf("unexpected `role`: %q; must be one of `node`, `pod`, `service`, `endpoints`, `endpointslices` or `ingress`; skipping it", sdc.Role) } } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + v := configMap.Delete(sdc) + if v != nil { + // v can be nil if GetLabels wasn't called yet. + cfg := v.(*apiConfig) + cfg.mustStop() + } +} diff --git a/lib/promscrape/discovery/openstack/openstack.go b/lib/promscrape/discovery/openstack/openstack.go index f4b17bac3..f7db68ab1 100644 --- a/lib/promscrape/discovery/openstack/openstack.go +++ b/lib/promscrape/discovery/openstack/openstack.go @@ -46,3 +46,8 @@ func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { return nil, fmt.Errorf("unexpected `role`: %q; must be one of `instance` or `hypervisor`; skipping it", sdc.Role) } } + +// MustStop stops further usage for sdc. +func (sdc *SDConfig) MustStop() { + configMap.Delete(sdc) +} diff --git a/lib/promscrape/discoveryutils/config_map.go b/lib/promscrape/discoveryutils/config_map.go index e82230ebf..d4c772f34 100644 --- a/lib/promscrape/discoveryutils/config_map.go +++ b/lib/promscrape/discoveryutils/config_map.go @@ -2,24 +2,25 @@ package discoveryutils import ( "sync" - "time" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" + "github.com/VictoriaMetrics/metrics" ) // ConfigMap is a map for storing discovery api configs. // // It automatically removes old configs which weren't accessed recently. type ConfigMap struct { - mu sync.Mutex - m map[interface{}]*configMapEntry - hasCleaner bool + mu sync.Mutex + m map[interface{}]interface{} + + entriesCount *metrics.Counter } // NewConfigMap creates ConfigMap func NewConfigMap() *ConfigMap { return &ConfigMap{ - m: make(map[interface{}]*configMapEntry), + m: make(map[interface{}]interface{}), + entriesCount: metrics.GetOrCreateCounter(`vm_promscrape_discoveryutils_configmap_entries_count`), } } @@ -32,42 +33,30 @@ func (cm *ConfigMap) Get(key interface{}, newConfig func() (interface{}, error)) cm.mu.Lock() defer cm.mu.Unlock() - if !cm.hasCleaner { - cm.hasCleaner = true - go cm.cleaner() - } - - e := cm.m[key] - if e != nil { - e.lastAccessTime = fasttime.UnixTimestamp() - return e.cfg, nil + cfg := cm.m[key] + if cfg != nil { + return cfg, nil } cfg, err := newConfig() if err != nil { return nil, err } - cm.m[key] = &configMapEntry{ - cfg: cfg, - lastAccessTime: fasttime.UnixTimestamp(), - } + cm.m[key] = cfg + cm.entriesCount.Inc() return cfg, nil } -func (cm *ConfigMap) cleaner() { - tc := time.NewTicker(15 * time.Minute) - for range tc.C { - currentTime := fasttime.UnixTimestamp() - cm.mu.Lock() - for k, e := range cm.m { - if currentTime-e.lastAccessTime > 10*60 { - delete(cm.m, k) - } - } - cm.mu.Unlock() - } -} +// Delete deletes config for the given key from cm and returns it. +func (cm *ConfigMap) Delete(key interface{}) interface{} { + cm.mu.Lock() + defer cm.mu.Unlock() -type configMapEntry struct { - cfg interface{} - lastAccessTime uint64 + cfg := cm.m[key] + if cfg == nil { + // The cfg can be missing if it wasn't accessed yet. + return nil + } + cm.entriesCount.Dec() + delete(cm.m, key) + return cfg } diff --git a/lib/promscrape/scraper.go b/lib/promscrape/scraper.go index 5e3aef789..3c2651369 100644 --- a/lib/promscrape/scraper.go +++ b/lib/promscrape/scraper.go @@ -129,6 +129,7 @@ func runScraper(configFile string, pushData func(wr *prompbmarshal.WriteRequest) logger.Infof("nothing changed in %q", configFile) goto waitForChans } + cfg.mustStop() cfg = cfgNew data = dataNew case <-tickerCh: @@ -141,9 +142,11 @@ func runScraper(configFile string, pushData func(wr *prompbmarshal.WriteRequest) // Nothing changed since the previous loadConfig goto waitForChans } + cfg.mustStop() cfg = cfgNew data = dataNew case <-globalStopCh: + cfg.mustStop() logger.Infof("stopping Prometheus scrapers") startTime := time.Now() scs.stop() From 1a3689af9a3d7d16cb83e06de9c9042d796ce69a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 14:31:28 +0200 Subject: [PATCH 31/46] lib/promscrape/discovery/kubernetes: deflake tests; a follow-up for 05fb08713cdbbe48c750c12060e790fecdc9a9b4 --- lib/promscrape/discovery/kubernetes/endpoints_test.go | 3 +-- lib/promscrape/discovery/kubernetes/endpointslices_test.go | 3 +-- lib/promscrape/discovery/kubernetes/ingress_test.go | 3 +-- lib/promscrape/discovery/kubernetes/pod_test.go | 3 +-- lib/promscrape/discovery/kubernetes/service_test.go | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/promscrape/discovery/kubernetes/endpoints_test.go b/lib/promscrape/discovery/kubernetes/endpoints_test.go index 05a74183b..c9649df92 100644 --- a/lib/promscrape/discovery/kubernetes/endpoints_test.go +++ b/lib/promscrape/discovery/kubernetes/endpoints_test.go @@ -1,7 +1,6 @@ package kubernetes import ( - "reflect" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -107,7 +106,7 @@ func TestParseEndpointsListSuccess(t *testing.T) { "__meta_kubernetes_namespace": "default", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels:\ngot\n%v\nwant\n%v", sortedLabelss, expectedLabelss) } } diff --git a/lib/promscrape/discovery/kubernetes/endpointslices_test.go b/lib/promscrape/discovery/kubernetes/endpointslices_test.go index d587fd93f..3555e42f2 100644 --- a/lib/promscrape/discovery/kubernetes/endpointslices_test.go +++ b/lib/promscrape/discovery/kubernetes/endpointslices_test.go @@ -1,7 +1,6 @@ package kubernetes import ( - "reflect" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -282,7 +281,7 @@ func TestParseEndpointSliceListSuccess(t *testing.T) { "__meta_kubernetes_namespace": "kube-system", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels,\ngot:\n%v,\nwant:\n%v", sortedLabelss, expectedLabelss) } diff --git a/lib/promscrape/discovery/kubernetes/ingress_test.go b/lib/promscrape/discovery/kubernetes/ingress_test.go index 8046d8a24..5718758f5 100644 --- a/lib/promscrape/discovery/kubernetes/ingress_test.go +++ b/lib/promscrape/discovery/kubernetes/ingress_test.go @@ -1,7 +1,6 @@ package kubernetes import ( - "reflect" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -92,7 +91,7 @@ func TestParseIngressListSuccess(t *testing.T) { "__meta_kubernetes_namespace": "default", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels:\ngot\n%v\nwant\n%v", sortedLabelss, expectedLabelss) } } diff --git a/lib/promscrape/discovery/kubernetes/pod_test.go b/lib/promscrape/discovery/kubernetes/pod_test.go index 204a8f102..54ebdec0f 100644 --- a/lib/promscrape/discovery/kubernetes/pod_test.go +++ b/lib/promscrape/discovery/kubernetes/pod_test.go @@ -1,7 +1,6 @@ package kubernetes import ( - "reflect" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -274,7 +273,7 @@ func TestParsePodListSuccess(t *testing.T) { "__meta_kubernetes_pod_annotationpresent_kubernetes_io_config_source": "true", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels:\ngot\n%v\nwant\n%v", sortedLabelss, expectedLabelss) } } diff --git a/lib/promscrape/discovery/kubernetes/service_test.go b/lib/promscrape/discovery/kubernetes/service_test.go index 56508e5f3..ca1570ef7 100644 --- a/lib/promscrape/discovery/kubernetes/service_test.go +++ b/lib/promscrape/discovery/kubernetes/service_test.go @@ -1,7 +1,6 @@ package kubernetes import ( - "reflect" "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -169,7 +168,7 @@ func TestParseServiceListSuccess(t *testing.T) { "__meta_kubernetes_service_annotationpresent_prometheus_io_scrape": "true", }), } - if !reflect.DeepEqual(sortedLabelss, expectedLabelss) { + if !areEqualLabelss(sortedLabelss, expectedLabelss) { t.Fatalf("unexpected labels:\ngot\n%v\nwant\n%v", sortedLabelss, expectedLabelss) } } From d6a41b6ea25baaebdbee7b118bddfafe0e1ec825 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 16:48:40 +0200 Subject: [PATCH 32/46] vendor: update github.com/VictoriaMetrics/metrics from v1.15.1 to v1.15.2 This should fix an edge case panic when 1e-9 value is passed to Histogram.Update See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096 --- go.mod | 2 +- go.sum | 4 ++-- vendor/github.com/VictoriaMetrics/metrics/histogram.go | 2 +- vendor/modules.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 5f8f812fc..09be84442 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( // Do not use the original github.com/valyala/fasthttp because of issues // like https://github.com/valyala/fasthttp/commit/996610f021ff45fdc98c2ce7884d5fa4e7f9199b github.com/VictoriaMetrics/fasthttp v1.0.12 - github.com/VictoriaMetrics/metrics v1.15.1 + github.com/VictoriaMetrics/metrics v1.15.2 github.com/VictoriaMetrics/metricsql v0.12.0 github.com/aws/aws-sdk-go v1.37.20 github.com/cespare/xxhash/v2 v2.1.1 diff --git a/go.sum b/go.sum index 986d96a20..6f44d2303 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6Ro github.com/VictoriaMetrics/fasthttp v1.0.12 h1:Ag0E119yrH4BTxVyjKD9TeiSImtG9bUcg/stItLJhSE= github.com/VictoriaMetrics/fasthttp v1.0.12/go.mod h1:3SeUL4zwB/p/a9aEeRc6gdlbrtNHXBJR6N376EgiSHU= github.com/VictoriaMetrics/metrics v1.12.2/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= -github.com/VictoriaMetrics/metrics v1.15.1 h1:KNYdbuNLh6+1jOOURZPxK9+myoebwv3y6CUPdVxczHE= -github.com/VictoriaMetrics/metrics v1.15.1/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= +github.com/VictoriaMetrics/metrics v1.15.2 h1:w/GD8L9tm+gvx1oZvAofRRXwammiicdI0jgLghA2Gdo= +github.com/VictoriaMetrics/metrics v1.15.2/go.mod h1:Z1tSfPfngDn12bTfZSCqArT3OPY3u88J12hSoOhuiRE= github.com/VictoriaMetrics/metricsql v0.12.0 h1:NMIu0MPBmGP34g4RUjI1U0xW5XYp7IVNXe9KtZI3PFQ= github.com/VictoriaMetrics/metricsql v0.12.0/go.mod h1:ylO7YITho/Iw6P71oEaGyHbO94bGoGtzWfLGqFhMIg8= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= diff --git a/vendor/github.com/VictoriaMetrics/metrics/histogram.go b/vendor/github.com/VictoriaMetrics/metrics/histogram.go index ebdd00d9e..e1a168c5b 100644 --- a/vendor/github.com/VictoriaMetrics/metrics/histogram.go +++ b/vendor/github.com/VictoriaMetrics/metrics/histogram.go @@ -94,7 +94,7 @@ func (h *Histogram) Update(v float64) { h.upper++ } else { idx := uint(bucketIdx) - if bucketIdx == float64(idx) { + if bucketIdx == float64(idx) && idx > 0 { // Edge case for 10^n values, which must go to the lower bucket // according to Prometheus logic for `le`-based histograms. idx-- diff --git a/vendor/modules.txt b/vendor/modules.txt index 730d17a12..19a8dd1f4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -14,7 +14,7 @@ github.com/VictoriaMetrics/fastcache github.com/VictoriaMetrics/fasthttp github.com/VictoriaMetrics/fasthttp/fasthttputil github.com/VictoriaMetrics/fasthttp/stackless -# github.com/VictoriaMetrics/metrics v1.15.1 +# github.com/VictoriaMetrics/metrics v1.15.2 github.com/VictoriaMetrics/metrics # github.com/VictoriaMetrics/metricsql v0.12.0 github.com/VictoriaMetrics/metricsql From 2c43e846a9a44b0cc2e272c0e5772c80fc717508 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 16:54:07 +0200 Subject: [PATCH 33/46] docs/CHANGELOG.md: mention the out of range panic bugfix d6a41b6ea25baaebdbee7b118bddfafe0e1ec825 --- docs/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f433e4294..a6972c5df 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -29,6 +29,7 @@ * BUGFIX: properly cache query results when `extra_label` query arg is used. Previously the cached results could clash for different `extra_label` values. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1095 * BUGFIX: fix `http: superfluous response.WriteHeader call` issue. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078 * BUGFIX: fix arm64 builds due to the issue in `github.com/golang/snappy`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074 +* BUGFIX: fix `index out of range [1024819115206086200] with length 27` panic, which could occur when `1e-9` value is passed to VictoriaMetrics histogram. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096 # [v1.54.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.54.1) From baefe5a8ad6b0297358c27097bf7080ffbbdb930 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 17:01:27 +0200 Subject: [PATCH 34/46] docs: actualize `-help` output --- app/vmagent/README.md | 10 ++++++++-- app/vmalert/README.md | 8 +++++++- app/vmauth/README.md | 10 +++++++++- app/vmbackup/README.md | 8 +++++++- app/vmrestore/README.md | 8 +++++++- docs/vmagent.md | 10 ++++++++-- docs/vmalert.md | 8 +++++++- docs/vmauth.md | 10 +++++++++- docs/vmbackup.md | 8 +++++++- docs/vmrestore.md | 8 +++++++- 10 files changed, 76 insertions(+), 12 deletions(-) diff --git a/app/vmagent/README.md b/app/vmagent/README.md index fa613a019..704135e58 100644 --- a/app/vmagent/README.md +++ b/app/vmagent/README.md @@ -490,7 +490,7 @@ See the docs at https://victoriametrics.github.io/vmagent.html . -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") -loggerTimezone string - Timezone to use for timestamps in logs. Local timezone can be used (default "UTC") + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxConcurrentInserts int @@ -518,6 +518,10 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Trim timestamps for OpenTSDB HTTP data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms) -pprofAuthKey string Auth key for /debug/pprof. It overrides httpAuth settings + -promscrape.cluster.memberNum int + The number of number in the cluster of scrapers. It must be an unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster + -promscrape.cluster.membersCount int + The number of members in a cluster of scrapers. Each member must have an unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default cluster scraping is disabled, i.e. a single scraper scrapes all the targets -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. See https://victoriametrics.github.io/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -550,6 +554,8 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Interval for checking for changes in 'file_sd_config'. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config for details (default 30s) -promscrape.gceSDCheckInterval gce_sd_configs Interval for checking for changes in gce. This works only if gce_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config for details (default 1m0s) + -promscrape.kubernetes.apiServerTimeout duration + How frequently to reload the full state from Kuberntes API server (default 10m0s) -promscrape.kubernetesSDCheckInterval kubernetes_sd_configs Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s) -promscrape.maxDroppedTargets droppedTargets @@ -575,7 +581,7 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Optional bearer auth token to use for -remoteWrite.url. If multiple args are set, then they are applied independently for the corresponding -remoteWrite.url Supports array of values separated by comma or specified via multiple flags. -remoteWrite.flushInterval duration - Interval for flushing the data to remote storage. Higher value reduces network bandwidth usage at the cost of delayed push of scraped data to remote storage. Minimum supported interval is 1 second (default 1s) + Interval for flushing the data to remote storage. This option takes effect only when less than 10K data points per second are pushed to -remoteWrite.url (default 1s) -remoteWrite.label array Optional label in the form 'name=value' to add to all the metrics before sending them to -remoteWrite.url. Pass multiple -remoteWrite.label flags in order to add multiple flags to metrics before sending them to remote storage Supports array of values separated by comma or specified via multiple flags. diff --git a/app/vmalert/README.md b/app/vmalert/README.md index ebfd07c2b..78eb9b71d 100644 --- a/app/vmalert/README.md +++ b/app/vmalert/README.md @@ -197,7 +197,7 @@ to set `-datasource.appendTypePrefix` flag to `true`, so vmalert can adjust URL The shortlist of configuration flags is the following: ``` -datasource.appendTypePrefix - Whether to add type prefix to -datasource.url based on the query type. Set to true if sending different query types to VMSelect URL. + Whether to add type prefix to -datasource.url based on the query type. Set to true if sending different query types to VMSelect URL. -datasource.basicAuth.password string Optional basic auth password for -datasource.url -datasource.basicAuth.username string @@ -206,6 +206,8 @@ The shortlist of configuration flags is the following: Lookback defines how far to look into past when evaluating queries. For example, if datasource.lookback=5m then param "time" with value now()-5m will be added to every query. -datasource.maxIdleConnections int Defines the number of idle (keep-alive connections) to configured datasource.Consider to set this value equal to the value: groups_total * group.concurrency. Too low value may result into high number of sockets in TIME_WAIT state. (default 100) + -datasource.queryStep duration + queryStep defines how far a value can fallback to when evaluating queries. For example, if datasource.queryStep=15s then param "step" with value "15s" will be added to every query. -datasource.tlsCAFile string Optional path to TLS CA file to use for verifying connections to -datasource.url. By default system CA is used -datasource.tlsCertFile string @@ -236,6 +238,8 @@ The shortlist of configuration flags is the following: Supports array of values separated by comma or specified via multiple flags. -external.url string External URL is used as alert's source for sent alerts to the notifier + -fs.disableMmap + Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() -http.connTimeout duration Incoming http connections are closed after the configured timeout. This may help spreading incoming load among a cluster of services behind load balancer. Note that the real timeout may be bigger by up to 10% as a protection from Thundering herd problem (default 2m0s) -http.disableResponseCompression @@ -264,6 +268,8 @@ The shortlist of configuration flags is the following: Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -memory.allowedBytes value diff --git a/app/vmauth/README.md b/app/vmauth/README.md index c3daf9d8f..41492efd1 100644 --- a/app/vmauth/README.md +++ b/app/vmauth/README.md @@ -174,6 +174,8 @@ See the docs at https://victoriametrics.github.io/vmauth.html . Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set -envflag.prefix string Prefix for environment variables if -envflag.enable is set + -fs.disableMmap + Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() -http.connTimeout duration Incoming http connections are closed after the configured timeout. This may help spreading incoming load among a cluster of services behind load balancer. Note that the real timeout may be bigger by up to 10% as a protection from Thundering herd problem (default 2m0s) -http.disableResponseCompression @@ -192,14 +194,20 @@ See the docs at https://victoriametrics.github.io/vmauth.html . Username for HTTP Basic Auth. The authentication is disabled if empty. See also -httpAuth.password -httpListenAddr string TCP address to listen for http connections (default ":8427") + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -memory.allowedBytes value Allowed size of system memory VictoriaMetrics caches may occupy. This option overrides -memory.allowedPercent if set to non-zero value. Too low value may increase cache miss rate, which usually results in higher CPU and disk IO usage. Too high value may evict too much data from OS page cache, which will result in higher disk IO usage Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) diff --git a/app/vmbackup/README.md b/app/vmbackup/README.md index b7bbf3e74..37bc102f4 100644 --- a/app/vmbackup/README.md +++ b/app/vmbackup/README.md @@ -191,14 +191,20 @@ See [this article](https://medium.com/@valyala/speeding-up-backups-for-big-time- Prefix for environment variables if -envflag.enable is set -fs.disableMmap Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxBytesPerSecond value The maximum upload speed. There is no limit if it is set to 0 Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) diff --git a/app/vmrestore/README.md b/app/vmrestore/README.md index b18177f39..c12629549 100644 --- a/app/vmrestore/README.md +++ b/app/vmrestore/README.md @@ -91,14 +91,20 @@ i.e. the end result would be similar to [rsync --delete](https://askubuntu.com/q Prefix for environment variables if -envflag.enable is set -fs.disableMmap Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxBytesPerSecond value The maximum download speed. There is no limit if it is set to 0 Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) diff --git a/docs/vmagent.md b/docs/vmagent.md index fa613a019..704135e58 100644 --- a/docs/vmagent.md +++ b/docs/vmagent.md @@ -490,7 +490,7 @@ See the docs at https://victoriametrics.github.io/vmagent.html . -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") -loggerTimezone string - Timezone to use for timestamps in logs. Local timezone can be used (default "UTC") + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxConcurrentInserts int @@ -518,6 +518,10 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Trim timestamps for OpenTSDB HTTP data to this duration. Minimum practical duration is 1ms. Higher duration (i.e. 1s) may be used for reducing disk space usage for timestamp data (default 1ms) -pprofAuthKey string Auth key for /debug/pprof. It overrides httpAuth settings + -promscrape.cluster.memberNum int + The number of number in the cluster of scrapers. It must be an unique value in the range 0 ... promscrape.cluster.membersCount-1 across scrapers in the cluster + -promscrape.cluster.membersCount int + The number of members in a cluster of scrapers. Each member must have an unique -promscrape.cluster.memberNum in the range 0 ... promscrape.cluster.membersCount-1 . Each member then scrapes roughly 1/N of all the targets. By default cluster scraping is disabled, i.e. a single scraper scrapes all the targets -promscrape.config string Optional path to Prometheus config file with 'scrape_configs' section containing targets to scrape. See https://victoriametrics.github.io/#how-to-scrape-prometheus-exporters-such-as-node-exporter for details -promscrape.config.dryRun @@ -550,6 +554,8 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Interval for checking for changes in 'file_sd_config'. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config for details (default 30s) -promscrape.gceSDCheckInterval gce_sd_configs Interval for checking for changes in gce. This works only if gce_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config for details (default 1m0s) + -promscrape.kubernetes.apiServerTimeout duration + How frequently to reload the full state from Kuberntes API server (default 10m0s) -promscrape.kubernetesSDCheckInterval kubernetes_sd_configs Interval for checking for changes in Kubernetes API server. This works only if kubernetes_sd_configs is configured in '-promscrape.config' file. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config for details (default 30s) -promscrape.maxDroppedTargets droppedTargets @@ -575,7 +581,7 @@ See the docs at https://victoriametrics.github.io/vmagent.html . Optional bearer auth token to use for -remoteWrite.url. If multiple args are set, then they are applied independently for the corresponding -remoteWrite.url Supports array of values separated by comma or specified via multiple flags. -remoteWrite.flushInterval duration - Interval for flushing the data to remote storage. Higher value reduces network bandwidth usage at the cost of delayed push of scraped data to remote storage. Minimum supported interval is 1 second (default 1s) + Interval for flushing the data to remote storage. This option takes effect only when less than 10K data points per second are pushed to -remoteWrite.url (default 1s) -remoteWrite.label array Optional label in the form 'name=value' to add to all the metrics before sending them to -remoteWrite.url. Pass multiple -remoteWrite.label flags in order to add multiple flags to metrics before sending them to remote storage Supports array of values separated by comma or specified via multiple flags. diff --git a/docs/vmalert.md b/docs/vmalert.md index ebfd07c2b..78eb9b71d 100644 --- a/docs/vmalert.md +++ b/docs/vmalert.md @@ -197,7 +197,7 @@ to set `-datasource.appendTypePrefix` flag to `true`, so vmalert can adjust URL The shortlist of configuration flags is the following: ``` -datasource.appendTypePrefix - Whether to add type prefix to -datasource.url based on the query type. Set to true if sending different query types to VMSelect URL. + Whether to add type prefix to -datasource.url based on the query type. Set to true if sending different query types to VMSelect URL. -datasource.basicAuth.password string Optional basic auth password for -datasource.url -datasource.basicAuth.username string @@ -206,6 +206,8 @@ The shortlist of configuration flags is the following: Lookback defines how far to look into past when evaluating queries. For example, if datasource.lookback=5m then param "time" with value now()-5m will be added to every query. -datasource.maxIdleConnections int Defines the number of idle (keep-alive connections) to configured datasource.Consider to set this value equal to the value: groups_total * group.concurrency. Too low value may result into high number of sockets in TIME_WAIT state. (default 100) + -datasource.queryStep duration + queryStep defines how far a value can fallback to when evaluating queries. For example, if datasource.queryStep=15s then param "step" with value "15s" will be added to every query. -datasource.tlsCAFile string Optional path to TLS CA file to use for verifying connections to -datasource.url. By default system CA is used -datasource.tlsCertFile string @@ -236,6 +238,8 @@ The shortlist of configuration flags is the following: Supports array of values separated by comma or specified via multiple flags. -external.url string External URL is used as alert's source for sent alerts to the notifier + -fs.disableMmap + Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() -http.connTimeout duration Incoming http connections are closed after the configured timeout. This may help spreading incoming load among a cluster of services behind load balancer. Note that the real timeout may be bigger by up to 10% as a protection from Thundering herd problem (default 2m0s) -http.disableResponseCompression @@ -264,6 +268,8 @@ The shortlist of configuration flags is the following: Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") -loggerWarnsPerSecondLimit int Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -memory.allowedBytes value diff --git a/docs/vmauth.md b/docs/vmauth.md index c3daf9d8f..41492efd1 100644 --- a/docs/vmauth.md +++ b/docs/vmauth.md @@ -174,6 +174,8 @@ See the docs at https://victoriametrics.github.io/vmauth.html . Whether to enable reading flags from environment variables additionally to command line. Command line flag values have priority over values from environment vars. Flags are read only from command line if this flag isn't set -envflag.prefix string Prefix for environment variables if -envflag.enable is set + -fs.disableMmap + Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() -http.connTimeout duration Incoming http connections are closed after the configured timeout. This may help spreading incoming load among a cluster of services behind load balancer. Note that the real timeout may be bigger by up to 10% as a protection from Thundering herd problem (default 2m0s) -http.disableResponseCompression @@ -192,14 +194,20 @@ See the docs at https://victoriametrics.github.io/vmauth.html . Username for HTTP Basic Auth. The authentication is disabled if empty. See also -httpAuth.password -httpListenAddr string TCP address to listen for http connections (default ":8427") + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -memory.allowedBytes value Allowed size of system memory VictoriaMetrics caches may occupy. This option overrides -memory.allowedPercent if set to non-zero value. Too low value may increase cache miss rate, which usually results in higher CPU and disk IO usage. Too high value may evict too much data from OS page cache, which will result in higher disk IO usage Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) diff --git a/docs/vmbackup.md b/docs/vmbackup.md index b7bbf3e74..37bc102f4 100644 --- a/docs/vmbackup.md +++ b/docs/vmbackup.md @@ -191,14 +191,20 @@ See [this article](https://medium.com/@valyala/speeding-up-backups-for-big-time- Prefix for environment variables if -envflag.enable is set -fs.disableMmap Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxBytesPerSecond value The maximum upload speed. There is no limit if it is set to 0 Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) diff --git a/docs/vmrestore.md b/docs/vmrestore.md index b18177f39..c12629549 100644 --- a/docs/vmrestore.md +++ b/docs/vmrestore.md @@ -91,14 +91,20 @@ i.e. the end result would be similar to [rsync --delete](https://askubuntu.com/q Prefix for environment variables if -envflag.enable is set -fs.disableMmap Whether to use pread() instead of mmap() for reading data files. By default mmap() is used for 64-bit arches and pread() is used for 32-bit arches, since they cannot read data files bigger than 2^32 bytes in memory. mmap() is usually faster for reading small data chunks than pread() + -loggerDisableTimestamps + Whether to disable writing timestamps in logs -loggerErrorsPerSecondLimit int - Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit (default 10) + Per-second limit on the number of ERROR messages. If more than the given number of errors are emitted per second, then the remaining errors are suppressed. Zero value disables the rate limit -loggerFormat string Format for logs. Possible values: default, json (default "default") -loggerLevel string Minimum level of errors to log. Possible values: INFO, WARN, ERROR, FATAL, PANIC (default "INFO") -loggerOutput string Output for the logs. Supported values: stderr, stdout (default "stderr") + -loggerTimezone string + Timezone to use for timestamps in logs. Timezone must be a valid IANA Time Zone. For example: America/New_York, Europe/Berlin, Etc/GMT+3 or Local (default "UTC") + -loggerWarnsPerSecondLimit int + Per-second limit on the number of WARN messages. If more than the given number of warns are emitted per second, then the remaining warns are suppressed. Zero value disables the rate limit -maxBytesPerSecond value The maximum download speed. There is no limit if it is set to 0 Supports the following optional suffixes for values: KB, MB, GB, KiB, MiB, GiB (default 0) From 019d8e88d82d0de14d7c0bdad8e092dba42778d5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 1 Mar 2021 17:15:52 +0200 Subject: [PATCH 35/46] lib/protoparser/graphite: fix parsing of a Graphite line with empty tags such as `foo; 1 2` See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100 --- docs/CHANGELOG.md | 1 + lib/protoparser/graphite/parser.go | 23 +++++++++--------- lib/protoparser/graphite/parser_test.go | 32 +++++++++++++++++++------ 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index a6972c5df..2a48b557b 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -30,6 +30,7 @@ * BUGFIX: fix `http: superfluous response.WriteHeader call` issue. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078 * BUGFIX: fix arm64 builds due to the issue in `github.com/golang/snappy`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074 * BUGFIX: fix `index out of range [1024819115206086200] with length 27` panic, which could occur when `1e-9` value is passed to VictoriaMetrics histogram. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096 +* BUGFIX: fix parsing for Graphite line with empty tags such as `foo; 123 456`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100 # [v1.54.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.54.1) diff --git a/lib/protoparser/graphite/parser.go b/lib/protoparser/graphite/parser.go index c2e20b3d5..5c1643777 100644 --- a/lib/protoparser/graphite/parser.go +++ b/lib/protoparser/graphite/parser.go @@ -71,7 +71,7 @@ func (r *Row) UnmarshalMetricAndTags(s string, tagsPool []Tag) ([]Tag, error) { var err error tagsPool, err = unmarshalTags(tagsPool, s[n+1:]) if err != nil { - return tagsPool, fmt.Errorf("cannot umarshal tags: %w", err) + return tagsPool, fmt.Errorf("cannot unmarshal tags: %w", err) } tags := tagsPool[tagsStart:] r.Tags = tags[:len(tags):len(tags)] @@ -171,18 +171,14 @@ func unmarshalTags(dst []Tag, s string) ([]Tag, error) { n := strings.IndexByte(s, ';') if n < 0 { // The last tag found - if err := tag.unmarshal(s); err != nil { - return dst[:len(dst)-1], err - } + tag.unmarshal(s) if len(tag.Key) == 0 || len(tag.Value) == 0 { // Skip empty tag dst = dst[:len(dst)-1] } return dst, nil } - if err := tag.unmarshal(s[:n]); err != nil { - return dst[:len(dst)-1], err - } + tag.unmarshal(s[:n]) s = s[n+1:] if len(tag.Key) == 0 || len(tag.Value) == 0 { // Skip empty tag @@ -202,13 +198,16 @@ func (t *Tag) reset() { t.Value = "" } -func (t *Tag) unmarshal(s string) error { +func (t *Tag) unmarshal(s string) { t.reset() n := strings.IndexByte(s, '=') if n < 0 { - return fmt.Errorf("missing tag value for %q", s) + // Empty tag value. + // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100 + t.Key = s + t.Value = s[len(s):] + } else { + t.Key = s[:n] + t.Value = s[n+1:] } - t.Key = s[:n] - t.Value = s[n+1:] - return nil } diff --git a/lib/protoparser/graphite/parser_test.go b/lib/protoparser/graphite/parser_test.go index b04314f1a..85e2cb76e 100644 --- a/lib/protoparser/graphite/parser_test.go +++ b/lib/protoparser/graphite/parser_test.go @@ -19,7 +19,6 @@ func TestUnmarshalMetricAndTagsFailure(t *testing.T) { f("") f(";foo=bar") f(" ") - f("foo;bar") f("foo ;bar=baz") f("f oo;bar=baz") f("foo;bar=baz ") @@ -80,12 +79,6 @@ func TestRowsUnmarshalFailure(t *testing.T) { // Missing value f("aaa") - // missing tag - f("aa; 12 34") - - // missing tag value - f("aa;bb 23 34") - // unexpected space in tag value // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/99 f("s;tag1=aaa1;tag2=bb b2;tag3=ccc3 1") @@ -187,6 +180,31 @@ func TestRowsUnmarshalSuccess(t *testing.T) { }}, }) // Empty tags + // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100 + f("foo; 1", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{}, + Value: 1, + }}, + }) + f("foo; 1 2", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{}, + Value: 1, + Timestamp: 2, + }}, + }) + // Empty tag name or value + f("foo;bar 1 2", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{}, + Value: 1, + Timestamp: 2, + }}, + }) f("foo;bar=baz;aa=;x=y;=z 1 2", &Rows{ Rows: []Row{{ Metric: "foo", From 937f382938acacd4ef75d278452068d1a7f32010 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 13:20:22 +0200 Subject: [PATCH 36/46] lib/protoparser/prometheus: properly unescape label values in Prometheus exposition format Unescape only `\n`, `\"` and `\\` sequences as Prometheus does. Other escape sequences shouldn't be unescaped. --- docs/CHANGELOG.md | 1 + lib/protoparser/prometheus/parser.go | 44 ++++++++++++----- lib/protoparser/prometheus/parser_test.go | 57 +++++++++++------------ 3 files changed, 61 insertions(+), 41 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 2a48b557b..5692a4752 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -31,6 +31,7 @@ * BUGFIX: fix arm64 builds due to the issue in `github.com/golang/snappy`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074 * BUGFIX: fix `index out of range [1024819115206086200] with length 27` panic, which could occur when `1e-9` value is passed to VictoriaMetrics histogram. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096 * BUGFIX: fix parsing for Graphite line with empty tags such as `foo; 123 456`. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100 +* BUGFIX: unescape only `\\`, `\n` and `\"` in label names when parsing Prometheus text exposition format as Prometheus does. Previously other escape sequences could be improperly unescaped. # [v1.54.1](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.54.1) diff --git a/lib/protoparser/prometheus/parser.go b/lib/protoparser/prometheus/parser.go index a56491ddb..69c61cf5c 100644 --- a/lib/protoparser/prometheus/parser.go +++ b/lib/protoparser/prometheus/parser.go @@ -2,7 +2,6 @@ package prometheus import ( "fmt" - "strconv" "strings" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" @@ -264,11 +263,7 @@ func unmarshalTags(dst []Tag, s string, noEscapes bool) (string, []Tag, error) { if n < 0 { return s, dst, fmt.Errorf("missing closing quote for tag value %q", s) } - var err error - value, err = unescapeValue(s[:n+1]) - if err != nil { - return s, dst, fmt.Errorf("cannot unescape value %q for tag %q: %w", s[:n+1], key, err) - } + value = unescapeValue(s[1:n]) s = s[n+1:] } if len(key) > 0 { @@ -324,16 +319,41 @@ func findClosingQuote(s string) int { } } -func unescapeValue(s string) (string, error) { - if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { - return "", fmt.Errorf("unexpected tag value: %q", s) - } +func unescapeValue(s string) string { n := strings.IndexByte(s, '\\') if n < 0 { // Fast path - nothing to unescape - return s[1 : len(s)-1], nil + return s } - return strconv.Unquote(s) + b := make([]byte, 0, len(s)) + for { + b = append(b, s[:n]...) + s = s[n+1:] + if len(s) == 0 { + b = append(b, '\\') + break + } + // label_value can be any sequence of UTF-8 characters, but the backslash (\), double-quote ("), + // and line feed (\n) characters have to be escaped as \\, \", and \n, respectively. + // See https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md + switch s[0] { + case '\\': + b = append(b, '\\') + case '"': + b = append(b, '"') + case 'n': + b = append(b, '\n') + default: + b = append(b, '\\', s[0]) + } + s = s[1:] + n = strings.IndexByte(s, '\\') + if n < 0 { + b = append(b, s...) + break + } + } + return string(b) } func prevBackslashesCount(s string) int { diff --git a/lib/protoparser/prometheus/parser_test.go b/lib/protoparser/prometheus/parser_test.go index 864e5948f..e8d2bbb35 100644 --- a/lib/protoparser/prometheus/parser_test.go +++ b/lib/protoparser/prometheus/parser_test.go @@ -46,41 +46,22 @@ func TestFindClosingQuote(t *testing.T) { f(`"foo\"bar\"baz"`, 14) } -func TestUnescapeValueFailure(t *testing.T) { - f := func(s string) { - t.Helper() - ss, err := unescapeValue(s) - if err == nil { - t.Fatalf("expecting error") - } - if ss != "" { - t.Fatalf("expecting empty string; got %q", ss) - } - } - f(``) - f(`foobar`) - f(`"foobar`) - f(`foobar"`) - f(`"foobar\"`) - f(` "foobar"`) - f(`"foobar" `) -} - -func TestUnescapeValueSuccess(t *testing.T) { +func TestUnescapeValue(t *testing.T) { f := func(s, resultExpected string) { t.Helper() - result, err := unescapeValue(s) - if err != nil { - t.Fatalf("unexpected error: %s", err) - } + result := unescapeValue(s) if result != resultExpected { t.Fatalf("unexpected result; got %q; want %q", result, resultExpected) } } - f(`""`, "") - f(`"f"`, "f") - f(`"foobar"`, "foobar") - f(`"\"\n\t"`, "\"\n\t") + f(``, "") + f(`f`, "f") + f(`foobar`, "foobar") + f(`\"\n\t`, "\"\n\\t") + + // Edge cases + f(`foo\bar`, "foo\\bar") + f(`foo\`, "foo\\") } func TestRowsUnmarshalFailure(t *testing.T) { @@ -203,6 +184,24 @@ cassandra_token_ownership_ratio 78.9`, &Rows{ }}, }) + // Incorrectly escaped backlash. This is real-world case, which must be supported. + f(`mssql_sql_server_active_transactions_sec{loginname="domain\somelogin",env="develop"} 56`, &Rows{ + Rows: []Row{{ + Metric: "mssql_sql_server_active_transactions_sec", + Tags: []Tag{ + { + Key: "loginname", + Value: "domain\\somelogin", + }, + { + Key: "env", + Value: "develop", + }, + }, + Value: 56, + }}, + }) + // Exemplars - see https://github.com/OpenObservability/OpenMetrics/blob/master/OpenMetrics.md#exemplars-1 f(`foo_bucket{le="10",a="#b"} 17 # {trace_id="oHg5SJ#YRHA0"} 9.8 1520879607.789 abc 123 456 # foobar From f6114345de736a946747d3f66e9879886ed6e563 Mon Sep 17 00:00:00 2001 From: Nikolay Date: Tue, 2 Mar 2021 14:27:09 +0300 Subject: [PATCH 37/46] Adds webIndentity token for aws (#1099) https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1080 --- lib/promscrape/discovery/ec2/api.go | 99 ++++++++++++++++++------ lib/promscrape/discovery/ec2/api_test.go | 49 ++++++++++-- 2 files changed, 119 insertions(+), 29 deletions(-) diff --git a/lib/promscrape/discovery/ec2/api.go b/lib/promscrape/discovery/ec2/api.go index e20c59edf..c407a2afa 100644 --- a/lib/promscrape/discovery/ec2/api.go +++ b/lib/promscrape/discovery/ec2/api.go @@ -18,13 +18,17 @@ import ( const ( awsAccessKeyEnv = "AWS_ACCESS_KEY_ID" awsSecretKeyEnv = "AWS_SECRET_ACCESS_KEY" + awsRegionEnv = "AWS_REGION" + awsRoleARNEnv = "AWS_ROLE_ARN" + awsWITPath = "AWS_WEB_IDENTITY_TOKEN_FILE" ) type apiConfig struct { - region string - roleARN string - filters string - port int + region string + roleARN string + webTokenPath string + filters string + port int ec2Endpoint string stsEndpoint string @@ -79,6 +83,14 @@ func newAPIConfig(sdc *SDConfig) (*apiConfig, error) { cfg.ec2Endpoint = buildAPIEndpoint(sdc.Endpoint, region, "ec2") cfg.stsEndpoint = buildAPIEndpoint(sdc.Endpoint, region, "sts") + envARN := os.Getenv(awsRoleARNEnv) + if envARN != "" { + cfg.roleARN = envARN + } + cfg.webTokenPath = os.Getenv(awsWITPath) + if cfg.webTokenPath != "" && cfg.roleARN == "" { + return nil, fmt.Errorf("roleARN is missing for %q, set it with cfg or env var %q", awsWITPath, awsRoleARNEnv) + } // explicitly set credentials has priority over env variables cfg.defaultAccessKey = os.Getenv(awsAccessKeyEnv) cfg.defaultSecretKey = os.Getenv(awsSecretKeyEnv) @@ -108,6 +120,11 @@ func getFiltersQueryString(filters []Filter) string { } func getDefaultRegion() (string, error) { + envRegion := os.Getenv(awsRegionEnv) + if envRegion != "" { + return envRegion, nil + } + data, err := getMetadataByPath("dynamic/instance-identity/document") if err != nil { return "", err @@ -156,6 +173,13 @@ func getAPICredentials(cfg *apiConfig) (*apiCredentials, error) { AccessKeyID: cfg.defaultAccessKey, SecretAccessKey: cfg.defaultSecretKey, } + if len(cfg.webTokenPath) > 0 { + token, err := ioutil.ReadFile(cfg.webTokenPath) + if err != nil { + return nil, fmt.Errorf("cannot read webToken from path: %q, err: %w", cfg.webTokenPath, err) + } + return getRoleWebIdentityCredentials(cfg.stsEndpoint, cfg.roleARN, string(token)) + } // we need instance credentials if dont have access keys if len(acNew.AccessKeyID) == 0 && len(acNew.SecretAccessKey) == 0 { @@ -263,42 +287,73 @@ func getMetadataByPath(apiPath string) ([]byte, error) { return readResponseBody(resp, apiURL) } -// getRoleARNCredentials obtains credentials fo the given roleARN. -func getRoleARNCredentials(region, stsEndpoint, roleARN string, creds *apiCredentials) (*apiCredentials, error) { - data, err := getSTSAPIResponse(region, stsEndpoint, roleARN, creds) +// getRoleWebIdentityCredentials obtains credentials fo the given roleARN with webToken. +// https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html +// aws IRSA for kubernetes. +// https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/ +func getRoleWebIdentityCredentials(stsEndpoint, roleARN string, token string) (*apiCredentials, error) { + data, err := getSTSAPIResponse("AssumeRoleWithWebIdentity", stsEndpoint, roleARN, func(apiURL string) (*http.Request, error) { + apiURL += fmt.Sprintf("&WebIdentityToken=%s", token) + return http.NewRequest("GET", apiURL, nil) + }) if err != nil { return nil, err } - return parseARNCredentials(data) + return parseARNCredentials(data, "AssumeRoleWithWebIdentity") +} + +// getRoleARNCredentials obtains credentials fo the given roleARN. +func getRoleARNCredentials(region, stsEndpoint, roleARN string, creds *apiCredentials) (*apiCredentials, error) { + data, err := getSTSAPIResponse("AssumeRole", stsEndpoint, roleARN, func(apiURL string) (*http.Request, error) { + return newSignedRequest(apiURL, "sts", region, creds) + }) + if err != nil { + return nil, err + } + return parseARNCredentials(data, "AssumeRole") } // parseARNCredentials parses apiCredentials from AssumeRole response. // // See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html -func parseARNCredentials(data []byte) (*apiCredentials, error) { +func parseARNCredentials(data []byte, role string) (*apiCredentials, error) { var arr AssumeRoleResponse if err := xml.Unmarshal(data, &arr); err != nil { return nil, fmt.Errorf("cannot parse AssumeRoleResponse response from %q: %w", data, err) } + var cred assumeCredentials + switch role { + case "AssumeRole": + cred = arr.AssumeRoleResult.Credentials + case "AssumeRoleWithWebIdentity": + cred = arr.AssumeRoleWithWebIdentityResult.Credentials + default: + return nil, fmt.Errorf("bug, unexpected role: %q", role) + } return &apiCredentials{ - AccessKeyID: arr.AssumeRoleResult.Credentials.AccessKeyID, - SecretAccessKey: arr.AssumeRoleResult.Credentials.SecretAccessKey, - Token: arr.AssumeRoleResult.Credentials.SessionToken, - Expiration: arr.AssumeRoleResult.Credentials.Expiration, + AccessKeyID: cred.AccessKeyID, + SecretAccessKey: cred.SecretAccessKey, + Token: cred.SessionToken, + Expiration: cred.Expiration, }, nil } +type assumeCredentials struct { + AccessKeyID string `xml:"AccessKeyId"` + SecretAccessKey string `xml:"SecretAccessKey"` + SessionToken string `xml:"SessionToken"` + Expiration time.Time `xml:"Expiration"` +} + // AssumeRoleResponse represents AssumeRole response // // See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html type AssumeRoleResponse struct { AssumeRoleResult struct { - Credentials struct { - AccessKeyID string `xml:"AccessKeyId"` - SecretAccessKey string `xml:"SecretAccessKey"` - SessionToken string `xml:"SessionToken"` - Expiration time.Time `xml:"Expiration"` - } + Credentials assumeCredentials + } + AssumeRoleWithWebIdentityResult struct { + Credentials assumeCredentials } } @@ -323,14 +378,14 @@ func buildAPIEndpoint(customEndpoint, region, service string) string { // and returns temporary credentials with expiration time // // See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html -func getSTSAPIResponse(region, stsEndpoint, roleARN string, creds *apiCredentials) ([]byte, error) { +func getSTSAPIResponse(action, stsEndpoint, roleARN string, reqBuilder func(apiURL string) (*http.Request, error)) ([]byte, error) { // See https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html - apiURL := fmt.Sprintf("%s?Action=%s", stsEndpoint, "AssumeRole") + apiURL := fmt.Sprintf("%s?Action=%s", stsEndpoint, action) apiURL += "&Version=2011-06-15" apiURL += fmt.Sprintf("&RoleArn=%s", roleARN) // we have to provide unique session name for cloudtrail audit apiURL += "&RoleSessionName=vmagent-ec2-discovery" - req, err := newSignedRequest(apiURL, "sts", region, creds) + req, err := reqBuilder(apiURL) if err != nil { return nil, fmt.Errorf("cannot create signed request: %w", err) } diff --git a/lib/promscrape/discovery/ec2/api_test.go b/lib/promscrape/discovery/ec2/api_test.go index b067880b1..cd4b4a6cc 100644 --- a/lib/promscrape/discovery/ec2/api_test.go +++ b/lib/promscrape/discovery/ec2/api_test.go @@ -51,7 +51,7 @@ func TestParseMetadataSecurityCredentialsSuccess(t *testing.T) { func TestParseARNCredentialsFailure(t *testing.T) { f := func(s string) { t.Helper() - creds, err := parseARNCredentials([]byte(s)) + creds, err := parseARNCredentials([]byte(s), "") if err == nil { t.Fatalf("expecting non-nil error") } @@ -64,6 +64,19 @@ func TestParseARNCredentialsFailure(t *testing.T) { } func TestParseARNCredentialsSuccess(t *testing.T) { + + f := func(data, role string, credsExpected *apiCredentials) { + t.Helper() + creds, err := parseARNCredentials([]byte(data), role) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + + if !reflect.DeepEqual(creds, credsExpected) { + t.Fatalf("unexpected creds;\ngot\n%+v\nwant\n%+v", creds, credsExpected) + } + + } // See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html s := ` @@ -90,10 +103,6 @@ func TestParseARNCredentialsSuccess(t *testing.T) { ` - creds, err := parseARNCredentials([]byte(s)) - if err != nil { - t.Fatalf("unexpected error: %s", err) - } credsExpected := &apiCredentials{ AccessKeyID: "ASIAIOSFODNN7EXAMPLE", SecretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", @@ -106,9 +115,35 @@ func TestParseARNCredentialsSuccess(t *testing.T) { `, Expiration: mustParseRFC3339("2019-11-09T13:34:41Z"), } - if !reflect.DeepEqual(creds, credsExpected) { - t.Fatalf("unexpected creds;\ngot\n%+v\nwant\n%+v", creds, credsExpected) + s2 := ` + + sts.amazonaws.com + + AROA2X6NOXN27E3OGMK3T:vmagent-ec2-discovery + arn:aws:sts::111111111:assumed-role/eks-role-9N0EFKEDJ1X/vmagent-ec2-discovery + + arn:aws:iam::111111111:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/111111111 + + ASIABYASSDASF + asffasfasf/RvxIQpCid4iRMGm56nnRs2oKgV + asfafsassssssssss/MlyKUPOYAiEAq5HgS19Mf8SJ3kIKU3NCztDeZW5EUW4NrPrPyXQ8om0q/AQIjv////////// + 2021-03-01T13:38:15Z + + system:serviceaccount:default:vmagent + + + 1214124-7bb0-4673-ad6d-af9e67fc1141 + +` + credsExpected2 := &apiCredentials{ + AccessKeyID: "ASIABYASSDASF", + SecretAccessKey: "asffasfasf/RvxIQpCid4iRMGm56nnRs2oKgV", + Token: "asfafsassssssssss/MlyKUPOYAiEAq5HgS19Mf8SJ3kIKU3NCztDeZW5EUW4NrPrPyXQ8om0q/AQIjv//////////", + Expiration: mustParseRFC3339("2021-03-01T13:38:15Z"), } + + f(s, "AssumeRole", credsExpected) + f(s2, "AssumeRoleWithWebIdentity", credsExpected2) } func mustParseRFC3339(s string) time.Time { From 22b1941cfc8216bef7dcdba72c385f7f4c949806 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 13:46:26 +0200 Subject: [PATCH 38/46] lib/promscrape/discovery/ec2: follow-up after f6114345de736a946747d3f66e9879886ed6e563 --- docs/CHANGELOG.md | 1 + lib/promscrape/discovery/ec2/api.go | 39 +++++++++-------------- lib/promscrape/discovery/ec2/api_test.go | 1 - lib/protoparser/prometheus/parser_test.go | 4 +-- 4 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 5692a4752..bfafd5222 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -18,6 +18,7 @@ * FEATURE: add `increase_pure(m[d])` function to MetricsQL. It works the same as `increase(m[d])` except of various edge cases. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/962) for details. * FEATURE: increase accuracy for `buckets_limit(limit, buckets)` results for small `limit` values. See [MetricsQL docs](https://victoriametrics.github.io/MetricsQL.html) for details. * FEATURE: vmagent: initial support for Windows build with `CGO_ENABLED=0 GOOS=windows go build -mod=vendor ./app/vmagent`. See [this](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/70) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1036). +* FEATURE: vmagent: support WebIdentityToken auth in EC2 service discovery. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1080) for details. * FEATURE: vmalert: properly process query params in `-datasource.url` and `-remoteRead.url` command-line flags. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1087) for details. * BUGFIX: vmagent: properly apply `-remoteWrite.rateLimit` when `-remoteWrite.queues` is greater than 1. Previously there was a data race, which could prevent from proper rate limiting. diff --git a/lib/promscrape/discovery/ec2/api.go b/lib/promscrape/discovery/ec2/api.go index c407a2afa..e0e6b30a3 100644 --- a/lib/promscrape/discovery/ec2/api.go +++ b/lib/promscrape/discovery/ec2/api.go @@ -12,17 +12,10 @@ import ( "sync" "time" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils" ) -const ( - awsAccessKeyEnv = "AWS_ACCESS_KEY_ID" - awsSecretKeyEnv = "AWS_SECRET_ACCESS_KEY" - awsRegionEnv = "AWS_REGION" - awsRoleARNEnv = "AWS_ROLE_ARN" - awsWITPath = "AWS_WEB_IDENTITY_TOKEN_FILE" -) - type apiConfig struct { region string roleARN string @@ -83,17 +76,16 @@ func newAPIConfig(sdc *SDConfig) (*apiConfig, error) { cfg.ec2Endpoint = buildAPIEndpoint(sdc.Endpoint, region, "ec2") cfg.stsEndpoint = buildAPIEndpoint(sdc.Endpoint, region, "sts") - envARN := os.Getenv(awsRoleARNEnv) - if envARN != "" { - cfg.roleARN = envARN + if cfg.roleARN == "" { + cfg.roleARN = os.Getenv("AWS_ROLE_ARN") } - cfg.webTokenPath = os.Getenv(awsWITPath) + cfg.webTokenPath = os.Getenv("AWS_WEB_IDENTITY_TOKEN_FILE") if cfg.webTokenPath != "" && cfg.roleARN == "" { - return nil, fmt.Errorf("roleARN is missing for %q, set it with cfg or env var %q", awsWITPath, awsRoleARNEnv) + return nil, fmt.Errorf("roleARN is missing for AWS_WEB_IDENTITY_TOKEN_FILE=%q, set it either in `ec2_sd_config` or via env var AWS_ROLE_ARN", cfg.webTokenPath) } // explicitly set credentials has priority over env variables - cfg.defaultAccessKey = os.Getenv(awsAccessKeyEnv) - cfg.defaultSecretKey = os.Getenv(awsSecretKeyEnv) + cfg.defaultAccessKey = os.Getenv("AWS_ACCESS_KEY_ID") + cfg.defaultSecretKey = os.Getenv("AWS_SECRET_ACCESS_KEY") if len(sdc.AccessKey) > 0 { cfg.defaultAccessKey = sdc.AccessKey } @@ -120,11 +112,10 @@ func getFiltersQueryString(filters []Filter) string { } func getDefaultRegion() (string, error) { - envRegion := os.Getenv(awsRegionEnv) + envRegion := os.Getenv("AWS_REGION") if envRegion != "" { return envRegion, nil } - data, err := getMetadataByPath("dynamic/instance-identity/document") if err != nil { return "", err @@ -199,12 +190,12 @@ func getAPICredentials(cfg *apiConfig) (*apiCredentials, error) { acNew = ac } if len(acNew.AccessKeyID) == 0 { - return nil, fmt.Errorf("missing `access_key`, you can set it with %s env var, "+ - "directly at `ec2_sd_config` as `access_key` or use instance iam role", awsAccessKeyEnv) + return nil, fmt.Errorf("missing `access_key`, you can set it with env var AWS_ACCESS_KEY_ID, " + + "directly at `ec2_sd_config` as `access_key` or use instance iam role") } if len(acNew.SecretAccessKey) == 0 { - return nil, fmt.Errorf("missing `secret_key`, you can set it with %s env var,"+ - "directly at `ec2_sd_config` as `secret_key` or use instance iam role", awsSecretKeyEnv) + return nil, fmt.Errorf("missing `secret_key`, you can set it with env var AWS_SECRET_ACCESS_KEY," + + "directly at `ec2_sd_config` as `secret_key` or use instance iam role") } return acNew, nil } @@ -293,7 +284,7 @@ func getMetadataByPath(apiPath string) ([]byte, error) { // https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/ func getRoleWebIdentityCredentials(stsEndpoint, roleARN string, token string) (*apiCredentials, error) { data, err := getSTSAPIResponse("AssumeRoleWithWebIdentity", stsEndpoint, roleARN, func(apiURL string) (*http.Request, error) { - apiURL += fmt.Sprintf("&WebIdentityToken=%s", token) + apiURL += fmt.Sprintf("&WebIdentityToken=%s", url.QueryEscape(token)) return http.NewRequest("GET", apiURL, nil) }) if err != nil { @@ -328,7 +319,7 @@ func parseARNCredentials(data []byte, role string) (*apiCredentials, error) { case "AssumeRoleWithWebIdentity": cred = arr.AssumeRoleWithWebIdentityResult.Credentials default: - return nil, fmt.Errorf("bug, unexpected role: %q", role) + logger.Panicf("BUG: unexpected role: %q", role) } return &apiCredentials{ AccessKeyID: cred.AccessKeyID, @@ -374,7 +365,7 @@ func buildAPIEndpoint(customEndpoint, region, service string) string { return endpoint } -// getSTSAPIResponse makes request to aws sts api with role_arn +// getSTSAPIResponse makes request to aws sts api with roleARN // and returns temporary credentials with expiration time // // See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html diff --git a/lib/promscrape/discovery/ec2/api_test.go b/lib/promscrape/discovery/ec2/api_test.go index cd4b4a6cc..1a1769f84 100644 --- a/lib/promscrape/discovery/ec2/api_test.go +++ b/lib/promscrape/discovery/ec2/api_test.go @@ -64,7 +64,6 @@ func TestParseARNCredentialsFailure(t *testing.T) { } func TestParseARNCredentialsSuccess(t *testing.T) { - f := func(data, role string, credsExpected *apiCredentials) { t.Helper() creds, err := parseARNCredentials([]byte(data), role) diff --git a/lib/protoparser/prometheus/parser_test.go b/lib/protoparser/prometheus/parser_test.go index e8d2bbb35..eef149713 100644 --- a/lib/protoparser/prometheus/parser_test.go +++ b/lib/protoparser/prometheus/parser_test.go @@ -190,11 +190,11 @@ cassandra_token_ownership_ratio 78.9`, &Rows{ Metric: "mssql_sql_server_active_transactions_sec", Tags: []Tag{ { - Key: "loginname", + Key: "loginname", Value: "domain\\somelogin", }, { - Key: "env", + Key: "env", Value: "develop", }, }, From 6a7ef768ffa36fdfca8ab1e4bc74f99b049faaa3 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 16:42:48 +0200 Subject: [PATCH 39/46] lib/promscrape/discovery/kubernetes: cache ScrapeWork objects as soon as the corresponding k8s objects are changed This should reduce CPU usage and memory usage when Kubernetes contains tens of thousands of objects --- lib/promscrape/config.go | 116 +++++------------- lib/promscrape/discovery/kubernetes/api.go | 65 +++++++--- .../discovery/kubernetes/kubernetes.go | 13 +- 3 files changed, 83 insertions(+), 111 deletions(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 5318bd9af..38b031677 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -14,7 +14,6 @@ import ( "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup" "github.com/VictoriaMetrics/VictoriaMetrics/lib/envtemplate" - "github.com/VictoriaMetrics/VictoriaMetrics/lib/fasttime" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promauth" "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal" @@ -241,10 +240,23 @@ func (cfg *Config) getKubernetesSDScrapeWork(prev []*ScrapeWork) []*ScrapeWork { ok := true for j := range sc.KubernetesSDConfigs { sdc := &sc.KubernetesSDConfigs[j] - var okLocal bool - dst, okLocal = appendSDScrapeWork(dst, sdc, cfg.baseDir, sc.swc, "kubernetes_sd_config") - if ok { - ok = okLocal + swos, err := sdc.GetScrapeWorkObjects(cfg.baseDir, func(metaLabels map[string]string) interface{} { + target := metaLabels["__address__"] + sw, err := sc.swc.getScrapeWork(target, nil, metaLabels) + if err != nil { + logger.Errorf("cannot create kubernetes_sd_config target target %q for job_name %q: %s", target, sc.swc.jobName, err) + return nil + } + return sw + }) + if err != nil { + logger.Errorf("skipping kubernetes_sd_config targets for job_name %q because of error: %s", sc.swc.jobName, err) + ok = false + break + } + for _, swo := range swos { + sw := swo.(*ScrapeWork) + dst = append(dst, sw) } } if ok { @@ -252,7 +264,7 @@ func (cfg *Config) getKubernetesSDScrapeWork(prev []*ScrapeWork) []*ScrapeWork { } swsPrev := swsPrevByJob[sc.swc.jobName] if len(swsPrev) > 0 { - logger.Errorf("there were errors when discovering kubernetes targets for job %q, so preserving the previous targets", sc.swc.jobName) + logger.Errorf("there were errors when discovering kubernetes_sd_config targets for job %q, so preserving the previous targets", sc.swc.jobName) dst = append(dst[:dstLen], swsPrev...) } } @@ -555,8 +567,6 @@ func getScrapeWorkConfig(sc *ScrapeConfig, baseDir string, globalCfg *GlobalConf disableKeepAlive: sc.DisableKeepAlive, streamParse: sc.StreamParse, scrapeAlignInterval: sc.ScrapeAlignInterval, - - cache: newScrapeWorkCache(), } return swc, nil } @@ -580,64 +590,6 @@ type scrapeWorkConfig struct { disableKeepAlive bool streamParse bool scrapeAlignInterval time.Duration - - cache *scrapeWorkCache -} - -type scrapeWorkCache struct { - mu sync.Mutex - m map[string]*scrapeWorkEntry - lastCleanupTime uint64 -} - -type scrapeWorkEntry struct { - sw *ScrapeWork - lastAccessTime uint64 -} - -func newScrapeWorkCache() *scrapeWorkCache { - return &scrapeWorkCache{ - m: make(map[string]*scrapeWorkEntry), - } -} - -func (swc *scrapeWorkCache) Get(key string) *ScrapeWork { - scrapeWorkCacheRequests.Inc() - currentTime := fasttime.UnixTimestamp() - swc.mu.Lock() - swe := swc.m[key] - if swe != nil { - swe.lastAccessTime = currentTime - } - swc.mu.Unlock() - if swe == nil { - return nil - } - scrapeWorkCacheHits.Inc() - return swe.sw -} - -var ( - scrapeWorkCacheRequests = metrics.NewCounter(`vm_promscrape_scrapework_cache_requests_total`) - scrapeWorkCacheHits = metrics.NewCounter(`vm_promscrape_scrapework_cache_hits_total`) -) - -func (swc *scrapeWorkCache) Set(key string, sw *ScrapeWork) { - currentTime := fasttime.UnixTimestamp() - swc.mu.Lock() - swc.m[key] = &scrapeWorkEntry{ - sw: sw, - lastAccessTime: currentTime, - } - if currentTime > swc.lastCleanupTime+10*60 { - for k, swe := range swc.m { - if currentTime > swe.lastAccessTime+2*60 { - delete(swc.m, k) - } - } - swc.lastCleanupTime = currentTime - } - swc.mu.Unlock() } type targetLabelsGetter interface { @@ -761,26 +713,6 @@ func (stc *StaticConfig) appendScrapeWork(dst []*ScrapeWork, swc *scrapeWorkConf return dst } -func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { - bb := scrapeWorkKeyBufPool.Get() - defer scrapeWorkKeyBufPool.Put(bb) - bb.B = appendScrapeWorkKey(bb.B[:0], target, extraLabels, metaLabels) - keyStrUnsafe := bytesutil.ToUnsafeString(bb.B) - if needSkipScrapeWork(keyStrUnsafe) { - return nil, nil - } - if sw := swc.cache.Get(keyStrUnsafe); sw != nil { - return sw, nil - } - sw, err := swc.getScrapeWorkReal(target, extraLabels, metaLabels) - if err == nil { - swc.cache.Set(string(bb.B), sw) - } - return sw, err -} - -var scrapeWorkKeyBufPool bytesutil.ByteBufferPool - func appendScrapeWorkKey(dst []byte, target string, extraLabels, metaLabels map[string]string) []byte { dst = append(dst, target...) dst = append(dst, ',') @@ -814,7 +746,17 @@ func appendSortedKeyValuePairs(dst []byte, m map[string]string) []byte { return dst } -func (swc *scrapeWorkConfig) getScrapeWorkReal(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { +var scrapeWorkKeyBufPool bytesutil.ByteBufferPool + +func (swc *scrapeWorkConfig) getScrapeWork(target string, extraLabels, metaLabels map[string]string) (*ScrapeWork, error) { + // Verify whether the scrape work must be skipped. + bb := scrapeWorkKeyBufPool.Get() + defer scrapeWorkKeyBufPool.Put(bb) + bb.B = appendScrapeWorkKey(bb.B[:0], target, extraLabels, metaLabels) + if needSkipScrapeWork(bytesutil.ToUnsafeString(bb.B)) { + return nil, nil + } + labels := mergeLabels(swc.jobName, swc.scheme, target, swc.metricsPath, extraLabels, swc.externalLabels, metaLabels, swc.params) var originalLabels []prompbmarshal.Label if !*dropOriginalLabels { diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 97507d75d..7a517bfd6 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -36,15 +36,15 @@ func (ac *apiConfig) mustStop() { var configMap = discoveryutils.NewConfigMap() -func getAPIConfig(sdc *SDConfig, baseDir string) (*apiConfig, error) { - v, err := configMap.Get(sdc, func() (interface{}, error) { return newAPIConfig(sdc, baseDir) }) +func getAPIConfig(sdc *SDConfig, baseDir string, swcFunc ScrapeWorkConstructorFunc) (*apiConfig, error) { + v, err := configMap.Get(sdc, func() (interface{}, error) { return newAPIConfig(sdc, baseDir, swcFunc) }) if err != nil { return nil, err } return v.(*apiConfig), nil } -func newAPIConfig(sdc *SDConfig, baseDir string) (*apiConfig, error) { +func newAPIConfig(sdc *SDConfig, baseDir string, swcFunc ScrapeWorkConstructorFunc) (*apiConfig, error) { ac, err := promauth.NewConfig(baseDir, sdc.BasicAuth, sdc.BearerToken, sdc.BearerTokenFile, sdc.TLSConfig) if err != nil { return nil, fmt.Errorf("cannot parse auth config: %w", err) @@ -97,7 +97,7 @@ func newAPIConfig(sdc *SDConfig, baseDir string) (*apiConfig, error) { }, Timeout: *apiServerTimeout, } - aw := newAPIWatcher(client, apiServer, ac.Authorization, sdc.Namespaces.Names, sdc.Selectors) + aw := newAPIWatcher(client, apiServer, ac.Authorization, sdc.Namespaces.Names, sdc.Selectors, swcFunc) cfg := &apiConfig{ aw: aw, } @@ -141,6 +141,9 @@ type apiWatcher struct { // Selectors to apply during watch selectors []Selector + // Constructor for creating ScrapeWork objects from labels. + swcFunc ScrapeWorkConstructorFunc + // mu protects watchersByURL mu sync.Mutex @@ -157,7 +160,7 @@ func (aw *apiWatcher) mustStop() { aw.wg.Wait() } -func newAPIWatcher(client *http.Client, apiServer, authorization string, namespaces []string, selectors []Selector) *apiWatcher { +func newAPIWatcher(client *http.Client, apiServer, authorization string, namespaces []string, selectors []Selector, swcFunc ScrapeWorkConstructorFunc) *apiWatcher { stopCtx, stopFunc := context.WithCancel(context.Background()) return &apiWatcher{ apiServer: apiServer, @@ -165,6 +168,7 @@ func newAPIWatcher(client *http.Client, apiServer, authorization string, namespa client: client, namespaces: namespaces, selectors: selectors, + swcFunc: swcFunc, watchersByURL: make(map[string]*urlWatcher), @@ -173,23 +177,23 @@ func newAPIWatcher(client *http.Client, apiServer, authorization string, namespa } } -// getLabelsForRole returns all the sets of labels for the given role. -func (aw *apiWatcher) getLabelsForRole(role string) []map[string]string { +// getScrapeWorkObjectsForRole returns all the ScrapeWork objects for the given role. +func (aw *apiWatcher) getScrapeWorkObjectsForRole(role string) []interface{} { aw.startWatchersForRole(role) - var ms []map[string]string + var swos []interface{} aw.mu.Lock() for _, uw := range aw.watchersByURL { if uw.role != role { continue } uw.mu.Lock() - for _, labels := range uw.labelsByKey { - ms = append(ms, labels...) + for _, swosLocal := range uw.swosByKey { + swos = append(swos, swosLocal...) } uw.mu.Unlock() } aw.mu.Unlock() - return ms + return swos } // getObjectByRole returns an object with the given (namespace, name) key and the given role. @@ -288,12 +292,12 @@ type urlWatcher struct { parseObject parseObjectFunc parseObjectList parseObjectListFunc - // mu protects objectsByKey and labelsByKey + // mu protects objectsByKey and swosByKey mu sync.Mutex // objectsByKey contains the latest state for objects obtained from apiURL objectsByKey map[string]object - labelsByKey map[string][]map[string]string + swosByKey map[string][]interface{} // the parent apiWatcher aw *apiWatcher @@ -316,7 +320,7 @@ func (aw *apiWatcher) newURLWatcher(role, apiURL string, parseObject parseObject parseObjectList: parseObjectList, objectsByKey: make(map[string]object), - labelsByKey: make(map[string][]map[string]string), + swosByKey: make(map[string][]interface{}), aw: aw, @@ -354,20 +358,35 @@ func (uw *urlWatcher) reloadObjects() string { } return "" } - labelsByKey := make(map[string][]map[string]string, len(objectsByKey)) + swosByKey := make(map[string][]interface{}, len(objectsByKey)) for k, o := range objectsByKey { - labelsByKey[k] = o.getTargetLabels(aw) + labels := o.getTargetLabels(aw) + swos := getScrapeWorkObjectsForLabels(aw.swcFunc, labels) + if len(swos) > 0 { + swosByKey[k] = swos + } } uw.mu.Lock() uw.objectsRemoved.Add(-len(uw.objectsByKey)) uw.objectsAdded.Add(len(objectsByKey)) uw.objectsCount.Add(len(objectsByKey) - len(uw.objectsByKey)) uw.objectsByKey = objectsByKey - uw.labelsByKey = labelsByKey + uw.swosByKey = swosByKey uw.mu.Unlock() return metadata.ResourceVersion } +func getScrapeWorkObjectsForLabels(swcFunc ScrapeWorkConstructorFunc, labelss []map[string]string) []interface{} { + swos := make([]interface{}, 0, len(labelss)) + for _, labels := range labelss { + swo := swcFunc(labels) + if swo != nil { + swos = append(swos, swo) + } + } + return swos +} + // watchForUpdates watches for object updates starting from resourceVersion and updates the corresponding objects to the latest state. // // See https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes @@ -439,6 +458,7 @@ func (uw *urlWatcher) watchForUpdates(resourceVersion string) { // readObjectUpdateStream reads Kuberntes watch events from r and updates locally cached objects according to the received events. func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error { + aw := uw.aw d := json.NewDecoder(r) var we WatchEvent for { @@ -459,9 +479,14 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error { } uw.objectsByKey[key] = o uw.mu.Unlock() - labels := o.getTargetLabels(uw.aw) + labels := o.getTargetLabels(aw) + swos := getScrapeWorkObjectsForLabels(aw.swcFunc, labels) uw.mu.Lock() - uw.labelsByKey[key] = labels + if len(swos) > 0 { + uw.swosByKey[key] = swos + } else { + delete(uw.swosByKey, key) + } uw.mu.Unlock() case "DELETED": uw.mu.Lock() @@ -470,7 +495,7 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error { uw.objectsCount.Dec() } delete(uw.objectsByKey, key) - delete(uw.labelsByKey, key) + delete(uw.swosByKey, key) uw.mu.Unlock() default: return fmt.Errorf("unexpected WatchEvent type %q for role %q", we.Type, uw.role) diff --git a/lib/promscrape/discovery/kubernetes/kubernetes.go b/lib/promscrape/discovery/kubernetes/kubernetes.go index 07c2c00ee..2bab34550 100644 --- a/lib/promscrape/discovery/kubernetes/kubernetes.go +++ b/lib/promscrape/discovery/kubernetes/kubernetes.go @@ -37,15 +37,20 @@ type Selector struct { Field string `yaml:"field"` } -// GetLabels returns labels for the given sdc and baseDir. -func (sdc *SDConfig) GetLabels(baseDir string) ([]map[string]string, error) { - cfg, err := getAPIConfig(sdc, baseDir) +// ScrapeWorkConstructorFunc must construct ScrapeWork object for the given metaLabels. +type ScrapeWorkConstructorFunc func(metaLabels map[string]string) interface{} + +// GetScrapeWorkObjects returns ScrapeWork objects for the given sdc and baseDir. +// +// swcFunc is used for constructing such objects. +func (sdc *SDConfig) GetScrapeWorkObjects(baseDir string, swcFunc ScrapeWorkConstructorFunc) ([]interface{}, error) { + cfg, err := getAPIConfig(sdc, baseDir, swcFunc) if err != nil { return nil, fmt.Errorf("cannot create API config: %w", err) } switch sdc.Role { case "node", "pod", "service", "endpoints", "endpointslices", "ingress": - return cfg.aw.getLabelsForRole(sdc.Role), nil + return cfg.aw.getScrapeWorkObjectsForRole(sdc.Role), nil default: return nil, fmt.Errorf("unexpected `role`: %q; must be one of `node`, `pod`, `service`, `endpoints`, `endpointslices` or `ingress`; skipping it", sdc.Role) } From a939667ce038dd301a505559fea1cf93f3fc183f Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 17:54:31 +0200 Subject: [PATCH 40/46] lib/promrelabel: remove unneded optimizations for `labeldrop` and `labelkeep` actions These optimizations may slow down code execution by matching the same label against regexp two times instead of a single time --- lib/promrelabel/relabel.go | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/lib/promrelabel/relabel.go b/lib/promrelabel/relabel.go index 477cf2bea..1ee0e9868 100644 --- a/lib/promrelabel/relabel.go +++ b/lib/promrelabel/relabel.go @@ -225,17 +225,6 @@ func (prc *parsedRelabelConfig) apply(labels []prompbmarshal.Label, labelsOffset } return labels case "labeldrop": - keepSrc := true - for i := range src { - label := &src[i] - if prc.matchString(label.Name) { - keepSrc = false - break - } - } - if keepSrc { - return labels - } dst := labels[:labelsOffset] for i := range src { label := &src[i] @@ -245,17 +234,6 @@ func (prc *parsedRelabelConfig) apply(labels []prompbmarshal.Label, labelsOffset } return dst case "labelkeep": - keepSrc := true - for i := range src { - label := &src[i] - if !prc.matchString(label.Name) { - keepSrc = false - break - } - } - if keepSrc { - return labels - } dst := labels[:labelsOffset] for i := range src { label := &src[i] From d1d34664b518656533d7be79bb8f6dcadc8d5eb5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 18:32:44 +0200 Subject: [PATCH 41/46] lib/promscrape/discovery: properly track vm_promscrape_discovery_kubernetes_objects_removed_total metric --- lib/promscrape/discovery/kubernetes/api.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go index 7a517bfd6..da858bd27 100644 --- a/lib/promscrape/discovery/kubernetes/api.go +++ b/lib/promscrape/discovery/kubernetes/api.go @@ -23,7 +23,7 @@ import ( "github.com/VictoriaMetrics/metrics" ) -var apiServerTimeout = flag.Duration("promscrape.kubernetes.apiServerTimeout", 10*time.Minute, "How frequently to reload the full state from Kuberntes API server") +var apiServerTimeout = flag.Duration("promscrape.kubernetes.apiServerTimeout", 30*time.Minute, "How frequently to reload the full state from Kuberntes API server") // apiConfig contains config for API server type apiConfig struct { @@ -367,8 +367,8 @@ func (uw *urlWatcher) reloadObjects() string { } } uw.mu.Lock() - uw.objectsRemoved.Add(-len(uw.objectsByKey)) uw.objectsAdded.Add(len(objectsByKey)) + uw.objectsRemoved.Add(len(uw.objectsByKey)) uw.objectsCount.Add(len(objectsByKey) - len(uw.objectsByKey)) uw.objectsByKey = objectsByKey uw.swosByKey = swosByKey From 062211c61ccd75eaa5de556dc60e6126c63ab24a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 18:41:06 +0200 Subject: [PATCH 42/46] lib/promscrape: pre-allocate space for a map in mergeLabels This should reduce the number of memory allocations when discovering big number of targets --- lib/promscrape/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 38b031677..5ca2e5eae 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -893,7 +893,7 @@ func getParamsFromLabels(labels []prompbmarshal.Label, paramsOrig map[string][]s func mergeLabels(job, scheme, target, metricsPath string, extraLabels, externalLabels, metaLabels map[string]string, params map[string][]string) []prompbmarshal.Label { // See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - m := make(map[string]string) + m := make(map[string]string, 4 + len(externalLabels) + len(params) + len(extraLabels) + len(metaLabels)) for k, v := range externalLabels { m[k] = v } From 4de4da1e2a0a9d912b78400808cc6d7679a69e2f Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 20:47:59 +0200 Subject: [PATCH 43/46] lib/storage: typo fix: umarshal -> unmarshal --- lib/storage/block_header_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/storage/block_header_test.go b/lib/storage/block_header_test.go index aaa597914..a88bcf88b 100644 --- a/lib/storage/block_header_test.go +++ b/lib/storage/block_header_test.go @@ -47,7 +47,7 @@ func testBlockHeaderMarshalUnmarshal(t *testing.T, bh *blockHeader) { var bh1 blockHeader tail, err := bh1.Unmarshal(dst) if err != nil { - t.Fatalf("cannot umarshal bh=%+v from dst=%x: %s", bh, dst, err) + t.Fatalf("cannot unmarshal bh=%+v from dst=%x: %s", bh, dst, err) } if len(tail) > 0 { t.Fatalf("unexpected tail left after unmarshaling of bh=%+v: %x", bh, tail) From 03dceb700d31beb60a12b81a171cc32e433a8540 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 21:16:38 +0200 Subject: [PATCH 44/46] lib/promscrape: go fmt --- lib/promscrape/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/promscrape/config.go b/lib/promscrape/config.go index 5ca2e5eae..77029f7be 100644 --- a/lib/promscrape/config.go +++ b/lib/promscrape/config.go @@ -893,7 +893,7 @@ func getParamsFromLabels(labels []prompbmarshal.Label, paramsOrig map[string][]s func mergeLabels(job, scheme, target, metricsPath string, extraLabels, externalLabels, metaLabels map[string]string, params map[string][]string) []prompbmarshal.Label { // See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - m := make(map[string]string, 4 + len(externalLabels) + len(params) + len(extraLabels) + len(metaLabels)) + m := make(map[string]string, 4+len(externalLabels)+len(params)+len(extraLabels)+len(metaLabels)) for k, v := range externalLabels { m[k] = v } From d741794faba439df7496296f6e5393a454505153 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 21:37:11 +0200 Subject: [PATCH 45/46] vendor: `make vendor-update` --- go.mod | 10 +- go.sum | 23 ++-- vendor/cloud.google.com/go/storage/CHANGES.md | 4 + vendor/cloud.google.com/go/storage/go.mod | 8 +- vendor/cloud.google.com/go/storage/go.sum | 125 ++---------------- .../aws/aws-sdk-go/aws/endpoints/defaults.go | 25 +++- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../x/sys/windows/zerrors_windows.go | 49 ++++++- vendor/modules.txt | 10 +- 9 files changed, 105 insertions(+), 151 deletions(-) diff --git a/go.mod b/go.mod index 09be84442..f418bfcac 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/VictoriaMetrics/VictoriaMetrics require ( cloud.google.com/go v0.78.0 // indirect - cloud.google.com/go/storage v1.13.0 + cloud.google.com/go/storage v1.14.0 github.com/VictoriaMetrics/fastcache v1.5.7 // Do not use the original github.com/valyala/fasthttp because of issues @@ -10,14 +10,14 @@ require ( github.com/VictoriaMetrics/fasthttp v1.0.12 github.com/VictoriaMetrics/metrics v1.15.2 github.com/VictoriaMetrics/metricsql v0.12.0 - github.com/aws/aws-sdk-go v1.37.20 + github.com/aws/aws-sdk-go v1.37.22 github.com/cespare/xxhash/v2 v2.1.1 github.com/cheggaaa/pb/v3 v3.0.6 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/fatih/color v1.10.0 // indirect github.com/golang/snappy v0.0.3 github.com/influxdata/influxdb v1.8.4 - github.com/klauspost/compress v1.11.8 + github.com/klauspost/compress v1.11.9 github.com/mattn/go-runewidth v0.0.10 // indirect github.com/prometheus/client_golang v1.9.0 // indirect github.com/prometheus/common v0.18.0 // indirect @@ -36,9 +36,9 @@ require ( golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 + golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b google.golang.org/api v0.40.0 - google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 // indirect + google.golang.org/genproto v0.0.0-20210302174412-5ede27ff9881 // indirect google.golang.org/grpc v1.36.0 // indirect gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 6f44d2303..ff85f6a34 100644 --- a/go.sum +++ b/go.sum @@ -38,8 +38,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.13.0 h1:amPvhCOI+Hltp6rPu+62YdwhIrjf+34PKVAL4HwgYwk= -cloud.google.com/go/storage v1.13.0/go.mod h1:pqFyBUK3zZqMIIU5+8NaZq6/Ma3ClgUg9Hv5jfuJnvo= +cloud.google.com/go/storage v1.14.0 h1:6RRlFMv1omScs6iq2hfE3IvgE+l6RfJPampq8UZc5TU= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v48.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -123,8 +123,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.31/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.37.20 h1:CJCXpMYmBJrRH8YwoSE0oB9S3J5ax+62F14sYlDCztg= -github.com/aws/aws-sdk-go v1.37.20/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.37.22 h1:cyZp8TvUbH9rrShdrwULtCj4pB5szddrw9aKHUsw1Ic= +github.com/aws/aws-sdk-go v1.37.22/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -508,8 +508,8 @@ github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.8 h1:difgzQsp5mdAz9v8lm3P/I+EpDKMU/6uTMw1y1FObuo= -github.com/klauspost/compress v1.11.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.9 h1:5OCMOdde1TCT2sookEuVeEZzA8bmRSFV3AwPDZAG8AA= +github.com/klauspost/compress v1.11.9/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= @@ -922,7 +922,6 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93 h1:alLDrZkL34Y2bnGHfvC1CYBRBXCXgx8AC2vY4MRtYX4= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -1005,8 +1004,9 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 h1:V066+OYJ66oTjnhm4Yrn7SXIwSCiDQJxpBxmvqb1N1c= -golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b h1:kHlr0tATeLRMEiZJu5CknOw/E8V6h69sXXQFGoPtjcc= +golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1122,7 +1122,6 @@ google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSr google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.38.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.40.0 h1:uWrpz12dpVPn7cojP82mk02XDgTJLDPc2KbVTxrWb4A= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -1173,10 +1172,10 @@ google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210203152818-3206188e46ba/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 h1:PYBmACG+YEv8uQPW0r1kJj8tR+gkF0UWq7iFdUezwEw= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210302174412-5ede27ff9881 h1:SYuy3hIRsBIROE0aZwsJZOEJNC/n9/p0FmLEU9C31AE= +google.golang.org/genproto v0.0.0-20210302174412-5ede27ff9881/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= diff --git a/vendor/cloud.google.com/go/storage/CHANGES.md b/vendor/cloud.google.com/go/storage/CHANGES.md index f0f36018c..4c122dce6 100644 --- a/vendor/cloud.google.com/go/storage/CHANGES.md +++ b/vendor/cloud.google.com/go/storage/CHANGES.md @@ -1,5 +1,9 @@ # Changes +## v1.14.0 + +- Updates to various dependencies. + ## [1.13.0](https://www.github.com/googleapis/google-cloud-go/compare/storage/v1.12.0...v1.13.0) (2021-02-03) diff --git a/vendor/cloud.google.com/go/storage/go.mod b/vendor/cloud.google.com/go/storage/go.mod index af941722d..317887889 100644 --- a/vendor/cloud.google.com/go/storage/go.mod +++ b/vendor/cloud.google.com/go/storage/go.mod @@ -8,10 +8,10 @@ require ( github.com/google/go-cmp v0.5.4 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/mod v0.4.1 // indirect - golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3 - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c // indirect + golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 + golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073 // indirect golang.org/x/tools v0.1.0 // indirect - google.golang.org/api v0.38.0 - google.golang.org/genproto v0.0.0-20210203152818-3206188e46ba + google.golang.org/api v0.40.0 + google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 google.golang.org/grpc v1.35.0 ) diff --git a/vendor/cloud.google.com/go/storage/go.sum b/vendor/cloud.google.com/go/storage/go.sum index d44b529b7..5f4f16cd6 100644 --- a/vendor/cloud.google.com/go/storage/go.sum +++ b/vendor/cloud.google.com/go/storage/go.sum @@ -4,50 +4,30 @@ cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSR cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0 h1:GGslhk/BU052LPlnI1vpp3fcbUs+hQ3E+Doti/3/vF8= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0 h1:3ithwDMr7/3vpAMXiH+ZQnYbuIsh+OPhUPMFC9enmn0= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0 h1:WRz29PgAsVEyPSDHyk+0fpEkwEFyfhHn+JbksT6gIL4= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0 h1:EpMNVUorLiZIELdMZbCYX/ByTFCdoYopYAGxaGVz9ms= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0 h1:XgtDnVJRCPEUG21gjFiRPz4zI1Mjg16R+NYQjfmU4XY= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0 h1:xE3CPsOgttP4ACBePh79zTKALtXwn/Edhcr16R5hMWU= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0 h1:K2NyuHRuv15ku6eUpe0DQk5ZykPMnSOnvuVf6IHcjaE= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0 h1:a/O/bK/vWrYGOTFtH8di4rBxMZnmkjy+Y5LxpDwo+dA= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0 h1:Lpy6hKgdcl7a3WGSfJIFmxmcdjSpP6OmBEfcOv1Y680= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= @@ -55,7 +35,6 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -76,10 +55,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -92,46 +69,33 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4 h1:87PNWwrRvUSnqS4dlcBU/ftvOIBep4sYuBLlh6rX2wk= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -151,11 +115,9 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -174,13 +136,9 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5 h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= @@ -192,17 +150,12 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a h1:7Wlg8L54In96HTWOaI4sreLJ6qfyGuvSau5el3fK41Y= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd h1:zkO/Lhoka23X63N9OSzpSeROEUQ5ODw47tM3YWjygbs= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -211,14 +164,10 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac h1:8R1esu+8QioDxo4E4mX6bFztO+dMTM49DNAaWfO5OeY= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367 h1:0IiAsCRByjO2QjX7ZPkw5oU9x+n1YqRL802rjC0c3Aw= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= @@ -226,14 +175,10 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee h1:WG0RUwxtNT4qqaXX3DPA8zHFNm/D9xaBpxzHt1WcA/E= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -246,65 +191,44 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5 h1:WQ8q63x+f/zpC8Ac1s9wLElVoHhm32p6tudrU72n1QA= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5 h1:Lm4OryKCca1vehdsWogr9N4t7NfZxLbJoc/H0w4K4S4= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3 h1:BaN3BAqnopnKjvl+15DYP6LLrbBHfbfmlFYzmFj/Q9Q= -golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99 h1:5vD4XjIc0X5+kHZjx4UecYdjA6mJo+XXNoaW0EjU5Os= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -316,55 +240,37 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 h1:gZpLHxUX5BdYLA08Lj4YCJNN/jk7KtquiArPoeX0WvA= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 h1:ywK/j/KkyTHcdyYSZNXGjMwgmDSfjglYZ3vStQ/gSCU= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4 h1:sfkvUWPNGwSV+8/fNqctR5lS2AqCSqYwXdrjCxp/dXo= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d h1:nc5K6ox/4lTFbMVSL9WRR81ixkcwXThoiF6yf+R9scA= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e h1:hq86ru83GdWTlfQFZGO4nZJTU4Bs2wfHl8oFHRaXsfc= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f h1:Fqb3ao1hUmOR3GkUOg/Y+BadLwykBIzs5q8Ez2SbHyc= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073 h1:8qxJSnu+7dRq6upnbntrmriWByIakBuct5OM/MdQC1M= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -384,7 +290,6 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff h1:On1qIo75ByTwFJ4/W2bIqHcwJ9XAqtSWUs8GwRrIhtc= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -394,32 +299,22 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c h1:2EA2K0k9bcvvEDlqD8xdlOhCOqq+O/p9Voqi4x9W1YU= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a h1:7YaEqUc1tUg0yDwvdX+3U5bwrBg7u3FFAZ5D8gUs4/c= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74 h1:KW20qMcLRWuIgjdCpHFJbVZA7zsDKtFXPNcm7/eI5ZA= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56 h1:DFtSed2q3HtNuVazwVDZ4nSRS/JrZEig0gz2BY4VNrg= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d h1:7M9AXzLrJWWGdDYtBblPHBTnHtaN6KKQ98OYb35mLlY= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb h1:iKlO7ROJc6SttHKlxzwGytRtBUqX4VARrNTgP2YLX5M= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d h1:3K34ovZAOnVaUPxanr0j4ghTZTPTA0CnXvjCl+5lZqk= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4 h1:kDtqNkeBrZb8B+atrj50B5XLHpzXXqcCdZPP/ApQ5NY= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d h1:lzLdP95xJmMpwQ6LUHwrc5V7js93hTiY7gkznu0BgmY= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj8tIM0KixlUUnBtYXsmd8= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= @@ -451,18 +346,15 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0 h1:l2Nfbl2GPXdWorv+dT2XfinX2jOOw4zv1VhLstx+6rE= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.38.0 h1:vDyWk6eup8eQAidaZ31sNWIn8tZEL8qpbtGkBD4ytQo= -google.golang.org/api v0.38.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.40.0 h1:uWrpz12dpVPn7cojP82mk02XDgTJLDPc2KbVTxrWb4A= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= @@ -501,8 +393,8 @@ google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210203152818-3206188e46ba h1:np3A9jnmE/eMtrOwwvUycmQ1XoLyj5nqZ41bAyYLqJ0= -google.golang.org/genproto v0.0.0-20210203152818-3206188e46ba/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 h1:PYBmACG+YEv8uQPW0r1kJj8tR+gkF0UWq7iFdUezwEw= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -517,7 +409,6 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0 h1:raiipEjMOIC/TO2AvyTxP25XFdLxNIBwzDh3FM3XztI= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0 h1:TwIQcH3es+MojMVojxxfQ3l3OF2KzlRxML2xZq0kRo8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index a07e83e74..0c6fcdb01 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -3850,11 +3850,12 @@ var awsPartition = partition{ Region: "us-west-2", }, }, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "lambda": service{ @@ -6585,6 +6586,7 @@ var awsPartition = partition{ "transfer": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -10386,6 +10388,19 @@ var awsisobPartition = partition{ "us-isob-east-1": endpoint{}, }, }, + "route53": service{ + PartitionEndpoint: "aws-iso-b-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-iso-b-global": endpoint{ + Hostname: "route53.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + }, + }, + }, "s3": service{ Defaults: endpoint{ Protocols: []string{"http", "https"}, diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 0c403a140..508ca6ae8 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.37.20" +const SDKVersion = "1.37.22" diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go index f02120035..562e7fc31 100644 --- a/vendor/golang.org/x/sys/windows/zerrors_windows.go +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -146,6 +146,7 @@ const ( FACILITY_WEP = 2049 FACILITY_SYNCENGINE = 2050 FACILITY_XBOX = 2339 + FACILITY_GAME = 2340 FACILITY_PIX = 2748 ERROR_SUCCESS syscall.Errno = 0 NO_ERROR = 0 @@ -469,9 +470,18 @@ const ( ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 - ERROR_TIME_CRITICAL_THREAD syscall.Errno = 422 + ERROR_TIME_SENSITIVE_THREAD syscall.Errno = 422 ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 + ERROR_FILE_NOT_SUPPORTED syscall.Errno = 425 + ERROR_CLOUD_FILE_REQUEST_TIMEOUT syscall.Errno = 426 + ERROR_NO_TASK_QUEUE syscall.Errno = 427 + ERROR_SRC_SRV_DLL_LOAD_FAILED syscall.Errno = 428 + ERROR_NOT_SUPPORTED_WITH_BTT syscall.Errno = 429 + ERROR_ENCRYPTION_DISABLED syscall.Errno = 430 + ERROR_ENCRYPTING_METADATA_DISALLOWED syscall.Errno = 431 + ERROR_CANT_CLEAR_ENCRYPTION_FLAG syscall.Errno = 432 + ERROR_NO_SUCH_DEVICE syscall.Errno = 433 ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 @@ -1593,6 +1603,8 @@ const ( ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 + ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES syscall.Errno = 4554 + ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED syscall.Errno = 4555 ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 @@ -1824,6 +1836,7 @@ const ( ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 + ERROR_WIP_ENCRYPTION_FAILED syscall.Errno = 6023 ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 @@ -3000,6 +3013,7 @@ const ( ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 + ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS syscall.Errno = 14111 ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 @@ -3093,6 +3107,7 @@ const ( ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 + ERROR_MRM_MISSING_DEFAULT_LANGUAGE syscall.Errno = 15160 ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 @@ -3167,6 +3182,15 @@ const ( ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 + ERROR_APPX_RAW_DATA_WRITE_FAILED syscall.Errno = 15648 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE syscall.Errno = 15649 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE syscall.Errno = 15650 + ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY syscall.Errno = 15651 + ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY syscall.Errno = 15652 + ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER syscall.Errno = 15653 + ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED syscall.Errno = 15654 + ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE syscall.Errno = 15655 + ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES syscall.Errno = 15656 APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 @@ -3174,6 +3198,7 @@ const ( APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 + APPMODEL_ERROR_NO_MUTABLE_DIRECTORY syscall.Errno = 15707 ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 @@ -3204,7 +3229,8 @@ const ( E_NOT_SET = ERROR_NOT_FOUND E_NOT_VALID_STATE = ERROR_INVALID_STATE E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER - E_TIME_CRITICAL_THREAD = ERROR_TIME_CRITICAL_THREAD + E_TIME_SENSITIVE_THREAD = ERROR_TIME_SENSITIVE_THREAD + E_NO_TASK_QUEUE = ERROR_NO_TASK_QUEUE NOERROR syscall.Errno = 0 E_UNEXPECTED Handle = 0x8000FFFF E_NOTIMPL Handle = 0x80004001 @@ -3966,6 +3992,7 @@ const ( SEC_I_COMPLETE_NEEDED Handle = 0x00090313 SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 SEC_I_LOCAL_LOGON Handle = 0x00090315 + SEC_I_GENERIC_EXTENSION_RECEIVED Handle = 0x00090316 SEC_E_BAD_PKGID Handle = 0x80090316 SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 @@ -4033,6 +4060,8 @@ const ( SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 SEC_E_INVALID_UPN_NAME Handle = 0x80090369 + SEC_E_EXT_BUFFER_TOO_SMALL Handle = 0x8009036A + SEC_E_INSUFFICIENT_BUFFERS Handle = 0x8009036B SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION CRYPT_E_MSG_ERROR Handle = 0x80091001 @@ -4637,6 +4666,8 @@ const ( ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 + ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN Handle = 0xC0262012 + ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED Handle = 0xC0262013 ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 @@ -5393,6 +5424,13 @@ const ( FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE Handle = 0x803100DA + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE Handle = 0x803100DB + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE Handle = 0x803100DC + FVE_E_KEY_ROTATION_NOT_SUPPORTED Handle = 0x803100DD + FVE_E_EXECUTE_REQUEST_SENT_TOO_SOON Handle = 0x803100DE + FVE_E_KEY_ROTATION_NOT_ENABLED Handle = 0x803100DF + FVE_E_DEVICE_NOT_JOINED Handle = 0x803100E0 FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 @@ -5881,6 +5919,12 @@ const ( GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 + HCN_E_ICS_DISABLED Handle = 0x803B002A + HCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS Handle = 0x803B002B + HCN_E_ENTITY_HAS_REFERENCES Handle = 0x803B002C + HCN_E_INVALID_INTERNAL_PORT Handle = 0x803B002D + HCN_E_NAMESPACE_ATTACH_FAILED Handle = 0x803B002E + HCN_E_ADDR_INVALID_OR_RESERVED Handle = 0x803B002F SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 @@ -6846,6 +6890,7 @@ const ( UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B + UTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED Handle = 0x87C5105C WINML_ERR_INVALID_DEVICE Handle = 0x88900001 WINML_ERR_INVALID_BINDING Handle = 0x88900002 WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 diff --git a/vendor/modules.txt b/vendor/modules.txt index 19a8dd1f4..5949e56e0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -6,7 +6,7 @@ cloud.google.com/go/internal cloud.google.com/go/internal/optional cloud.google.com/go/internal/trace cloud.google.com/go/internal/version -# cloud.google.com/go/storage v1.13.0 +# cloud.google.com/go/storage v1.14.0 cloud.google.com/go/storage # github.com/VictoriaMetrics/fastcache v1.5.7 github.com/VictoriaMetrics/fastcache @@ -21,7 +21,7 @@ github.com/VictoriaMetrics/metricsql github.com/VictoriaMetrics/metricsql/binaryop # github.com/VividCortex/ewma v1.1.1 github.com/VividCortex/ewma -# github.com/aws/aws-sdk-go v1.37.20 +# github.com/aws/aws-sdk-go v1.37.22 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/arn github.com/aws/aws-sdk-go/aws/awserr @@ -113,7 +113,7 @@ github.com/jmespath/go-jmespath github.com/jstemmer/go-junit-report github.com/jstemmer/go-junit-report/formatter github.com/jstemmer/go-junit-report/parser -# github.com/klauspost/compress v1.11.8 +# github.com/klauspost/compress v1.11.9 github.com/klauspost/compress/flate github.com/klauspost/compress/fse github.com/klauspost/compress/gzip @@ -227,7 +227,7 @@ golang.org/x/oauth2/jws golang.org/x/oauth2/jwt # golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sync/errgroup -# golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46 +# golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b golang.org/x/sys/execabs golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix @@ -279,7 +279,7 @@ google.golang.org/appengine/internal/modules google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 +# google.golang.org/genproto v0.0.0-20210302174412-5ede27ff9881 google.golang.org/genproto/googleapis/api/annotations google.golang.org/genproto/googleapis/iam/v1 google.golang.org/genproto/googleapis/rpc/code From 1252ca44d842912bad2ef798c02262101c209114 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 2 Mar 2021 21:31:54 +0200 Subject: [PATCH 46/46] docs/CHANGELOG.md: cut v1.55.0 --- docs/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index bfafd5222..2e5992583 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,6 +2,10 @@ # tip + +# [v1.55.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.55.0) + + * FEATURE: add `sign(q)` and `clamp(q, min, max)` functions, which are planned to be added in [the upcoming Prometheus release](https://twitter.com/roidelapluie/status/1363428376162295811) . The `last_over_time(m[d])` function is already supported in [MetricsQL](https://victoriametrics.github.io/MetricsQL.html). * FEATURE: vmagent: add `scrape_align_interval` config option, which can be used for aligning scrapes to the beginning of the configured interval. See [these docs](https://victoriametrics.github.io/vmagent.html#troubleshooting) for details. * FEATURE: expose io-related metrics at `/metrics` page for every VictoriaMetrics component: