mirror of https://github.com/containers/podman.git
Bump k8s.io/apimachinery from 0.19.4 to 0.20.0
Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.19.4 to 0.20.0. - [Release notes](https://github.com/kubernetes/apimachinery/releases) - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.19.4...v0.20.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
parent
dd295f297b
commit
37fbf28d74
6
go.mod
6
go.mod
|
@ -53,7 +53,6 @@ require (
|
||||||
github.com/sirupsen/logrus v1.7.0
|
github.com/sirupsen/logrus v1.7.0
|
||||||
github.com/spf13/cobra v1.1.1
|
github.com/spf13/cobra v1.1.1
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/stretchr/objx v0.2.0 // indirect
|
|
||||||
github.com/stretchr/testify v1.6.1
|
github.com/stretchr/testify v1.6.1
|
||||||
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2
|
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2
|
||||||
github.com/uber/jaeger-client-go v2.25.0+incompatible
|
github.com/uber/jaeger-client-go v2.25.0+incompatible
|
||||||
|
@ -64,12 +63,11 @@ require (
|
||||||
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899
|
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
|
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
|
||||||
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13
|
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd
|
||||||
google.golang.org/appengine v1.6.6 // indirect
|
google.golang.org/appengine v1.6.6 // indirect
|
||||||
google.golang.org/protobuf v1.25.0 // indirect
|
|
||||||
gopkg.in/square/go-jose.v2 v2.5.1 // indirect
|
gopkg.in/square/go-jose.v2 v2.5.1 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
|
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
|
||||||
k8s.io/api v0.0.0-20190620084959-7cf5895f2711
|
k8s.io/api v0.0.0-20190620084959-7cf5895f2711
|
||||||
k8s.io/apimachinery v0.19.4
|
k8s.io/apimachinery v0.20.0
|
||||||
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab
|
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab
|
||||||
)
|
)
|
||||||
|
|
52
go.sum
52
go.sum
|
@ -31,8 +31,8 @@ github.com/Microsoft/hcsshim v0.8.9 h1:VrfodqvztU8YSOvygU+DN1BGaSGxmrNfqOv5oOuX2
|
||||||
github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
|
github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
|
||||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||||
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
|
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
|
||||||
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
|
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
|
||||||
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
|
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
|
||||||
|
@ -43,6 +43,7 @@ github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:C
|
||||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||||
|
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
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=
|
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
|
@ -192,10 +193,13 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
|
||||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||||
github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
|
github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
|
||||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
|
||||||
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
|
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||||
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
|
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
|
||||||
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
|
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
||||||
|
github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
|
||||||
|
github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||||
|
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
||||||
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=
|
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=
|
||||||
|
@ -211,7 +215,7 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||||
|
@ -228,6 +232,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
|
||||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
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 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
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-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
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/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
|
@ -330,13 +336,15 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw=
|
github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw=
|
||||||
github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
||||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||||
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
|
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
github.com/manifoldco/promptui v0.8.0 h1:R95mMF+McvXZQ7j1g8ucVZE1gLP3Sv6j9vlF9kyRqQo=
|
github.com/manifoldco/promptui v0.8.0 h1:R95mMF+McvXZQ7j1g8ucVZE1gLP3Sv6j9vlF9kyRqQo=
|
||||||
github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ=
|
github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ=
|
||||||
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
||||||
|
@ -582,6 +590,7 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
@ -624,12 +633,15 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M=
|
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M=
|
||||||
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
|
||||||
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
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-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
@ -678,19 +690,22 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200327173247-9dae0f8f5775/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13 h1:5jaG59Zhd+8ZXe8C+lgiAGqkOaZBruqrWclLkgAww34=
|
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13 h1:5jaG59Zhd+8ZXe8C+lgiAGqkOaZBruqrWclLkgAww34=
|
||||||
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd h1:5CtCZbICpIOFdgO940moixOPjc0178IU44m4EjOO5IY=
|
||||||
|
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0/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.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
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 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
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=
|
||||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
@ -698,7 +713,6 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqG
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
@ -710,6 +724,7 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/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-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
@ -720,6 +735,8 @@ golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
|
@ -759,7 +776,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
|
||||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
|
||||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
|
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
|
||||||
|
@ -807,8 +823,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt
|
||||||
k8s.io/api v0.0.0-20190620084959-7cf5895f2711 h1:BblVYz/wE5WtBsD/Gvu54KyBUTJMflolzc5I2DTvh50=
|
k8s.io/api v0.0.0-20190620084959-7cf5895f2711 h1:BblVYz/wE5WtBsD/Gvu54KyBUTJMflolzc5I2DTvh50=
|
||||||
k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A=
|
k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A=
|
||||||
k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA=
|
k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA=
|
||||||
k8s.io/apimachinery v0.19.4 h1:+ZoddM7nbzrDCp0T3SWnyxqf8cbWPT2fkZImoyvHUG0=
|
k8s.io/apimachinery v0.20.0 h1:jjzbTJRXk0unNS71L7h3lxGDH/2HPxMPaQY+MjECKL8=
|
||||||
k8s.io/apimachinery v0.19.4/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA=
|
k8s.io/apimachinery v0.20.0/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
|
||||||
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab h1:E8Fecph0qbNsAbijJJQryKu4Oi9QTp5cVpjTE+nqg6g=
|
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab h1:E8Fecph0qbNsAbijJJQryKu4Oi9QTp5cVpjTE+nqg6g=
|
||||||
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k=
|
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k=
|
||||||
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||||
|
@ -816,15 +832,15 @@ k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
||||||
k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A=
|
k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ=
|
||||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||||
k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc=
|
k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc=
|
||||||
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
|
k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
|
||||||
k8s.io/utils v0.0.0-20190221042446-c2654d5206da h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4=
|
k8s.io/utils v0.0.0-20190221042446-c2654d5206da h1:ElyM7RPonbKnQqOcw7dG2IK5uvQQn3b/WPHqD5mBvP4=
|
||||||
k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=
|
k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=
|
sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||||
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
|
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
|
||||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
||||||
|
|
|
@ -765,7 +765,7 @@ func unescape(s string) (ch string, tail string, err error) {
|
||||||
if i > utf8.MaxRune {
|
if i > utf8.MaxRune {
|
||||||
return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
|
return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
|
||||||
}
|
}
|
||||||
return string(i), s, nil
|
return string(rune(i)), s, nil
|
||||||
}
|
}
|
||||||
return "", "", fmt.Errorf(`unknown escape \%c`, r)
|
return "", "", fmt.Errorf(`unknown escape \%c`, r)
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ var isSpecialElementMap = map[string]bool{
|
||||||
"iframe": true,
|
"iframe": true,
|
||||||
"img": true,
|
"img": true,
|
||||||
"input": true,
|
"input": true,
|
||||||
"keygen": true,
|
"keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility.
|
||||||
"li": true,
|
"li": true,
|
||||||
"link": true,
|
"link": true,
|
||||||
"listing": true,
|
"listing": true,
|
||||||
|
|
|
@ -161,65 +161,62 @@ var mathMLAttributeAdjustments = map[string]string{
|
||||||
}
|
}
|
||||||
|
|
||||||
var svgAttributeAdjustments = map[string]string{
|
var svgAttributeAdjustments = map[string]string{
|
||||||
"attributename": "attributeName",
|
"attributename": "attributeName",
|
||||||
"attributetype": "attributeType",
|
"attributetype": "attributeType",
|
||||||
"basefrequency": "baseFrequency",
|
"basefrequency": "baseFrequency",
|
||||||
"baseprofile": "baseProfile",
|
"baseprofile": "baseProfile",
|
||||||
"calcmode": "calcMode",
|
"calcmode": "calcMode",
|
||||||
"clippathunits": "clipPathUnits",
|
"clippathunits": "clipPathUnits",
|
||||||
"contentscripttype": "contentScriptType",
|
"diffuseconstant": "diffuseConstant",
|
||||||
"contentstyletype": "contentStyleType",
|
"edgemode": "edgeMode",
|
||||||
"diffuseconstant": "diffuseConstant",
|
"filterunits": "filterUnits",
|
||||||
"edgemode": "edgeMode",
|
"glyphref": "glyphRef",
|
||||||
"externalresourcesrequired": "externalResourcesRequired",
|
"gradienttransform": "gradientTransform",
|
||||||
"filterunits": "filterUnits",
|
"gradientunits": "gradientUnits",
|
||||||
"glyphref": "glyphRef",
|
"kernelmatrix": "kernelMatrix",
|
||||||
"gradienttransform": "gradientTransform",
|
"kernelunitlength": "kernelUnitLength",
|
||||||
"gradientunits": "gradientUnits",
|
"keypoints": "keyPoints",
|
||||||
"kernelmatrix": "kernelMatrix",
|
"keysplines": "keySplines",
|
||||||
"kernelunitlength": "kernelUnitLength",
|
"keytimes": "keyTimes",
|
||||||
"keypoints": "keyPoints",
|
"lengthadjust": "lengthAdjust",
|
||||||
"keysplines": "keySplines",
|
"limitingconeangle": "limitingConeAngle",
|
||||||
"keytimes": "keyTimes",
|
"markerheight": "markerHeight",
|
||||||
"lengthadjust": "lengthAdjust",
|
"markerunits": "markerUnits",
|
||||||
"limitingconeangle": "limitingConeAngle",
|
"markerwidth": "markerWidth",
|
||||||
"markerheight": "markerHeight",
|
"maskcontentunits": "maskContentUnits",
|
||||||
"markerunits": "markerUnits",
|
"maskunits": "maskUnits",
|
||||||
"markerwidth": "markerWidth",
|
"numoctaves": "numOctaves",
|
||||||
"maskcontentunits": "maskContentUnits",
|
"pathlength": "pathLength",
|
||||||
"maskunits": "maskUnits",
|
"patterncontentunits": "patternContentUnits",
|
||||||
"numoctaves": "numOctaves",
|
"patterntransform": "patternTransform",
|
||||||
"pathlength": "pathLength",
|
"patternunits": "patternUnits",
|
||||||
"patterncontentunits": "patternContentUnits",
|
"pointsatx": "pointsAtX",
|
||||||
"patterntransform": "patternTransform",
|
"pointsaty": "pointsAtY",
|
||||||
"patternunits": "patternUnits",
|
"pointsatz": "pointsAtZ",
|
||||||
"pointsatx": "pointsAtX",
|
"preservealpha": "preserveAlpha",
|
||||||
"pointsaty": "pointsAtY",
|
"preserveaspectratio": "preserveAspectRatio",
|
||||||
"pointsatz": "pointsAtZ",
|
"primitiveunits": "primitiveUnits",
|
||||||
"preservealpha": "preserveAlpha",
|
"refx": "refX",
|
||||||
"preserveaspectratio": "preserveAspectRatio",
|
"refy": "refY",
|
||||||
"primitiveunits": "primitiveUnits",
|
"repeatcount": "repeatCount",
|
||||||
"refx": "refX",
|
"repeatdur": "repeatDur",
|
||||||
"refy": "refY",
|
"requiredextensions": "requiredExtensions",
|
||||||
"repeatcount": "repeatCount",
|
"requiredfeatures": "requiredFeatures",
|
||||||
"repeatdur": "repeatDur",
|
"specularconstant": "specularConstant",
|
||||||
"requiredextensions": "requiredExtensions",
|
"specularexponent": "specularExponent",
|
||||||
"requiredfeatures": "requiredFeatures",
|
"spreadmethod": "spreadMethod",
|
||||||
"specularconstant": "specularConstant",
|
"startoffset": "startOffset",
|
||||||
"specularexponent": "specularExponent",
|
"stddeviation": "stdDeviation",
|
||||||
"spreadmethod": "spreadMethod",
|
"stitchtiles": "stitchTiles",
|
||||||
"startoffset": "startOffset",
|
"surfacescale": "surfaceScale",
|
||||||
"stddeviation": "stdDeviation",
|
"systemlanguage": "systemLanguage",
|
||||||
"stitchtiles": "stitchTiles",
|
"tablevalues": "tableValues",
|
||||||
"surfacescale": "surfaceScale",
|
"targetx": "targetX",
|
||||||
"systemlanguage": "systemLanguage",
|
"targety": "targetY",
|
||||||
"tablevalues": "tableValues",
|
"textlength": "textLength",
|
||||||
"targetx": "targetX",
|
"viewbox": "viewBox",
|
||||||
"targety": "targetY",
|
"viewtarget": "viewTarget",
|
||||||
"textlength": "textLength",
|
"xchannelselector": "xChannelSelector",
|
||||||
"viewbox": "viewBox",
|
"ychannelselector": "yChannelSelector",
|
||||||
"viewtarget": "viewTarget",
|
"zoomandpan": "zoomAndPan",
|
||||||
"xchannelselector": "xChannelSelector",
|
|
||||||
"ychannelselector": "yChannelSelector",
|
|
||||||
"zoomandpan": "zoomAndPan",
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -728,7 +728,13 @@ func inHeadNoscriptIM(p *parser) bool {
|
||||||
return inBodyIM(p)
|
return inBodyIM(p)
|
||||||
case a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Style:
|
case a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Style:
|
||||||
return inHeadIM(p)
|
return inHeadIM(p)
|
||||||
case a.Head, a.Noscript:
|
case a.Head:
|
||||||
|
// Ignore the token.
|
||||||
|
return true
|
||||||
|
case a.Noscript:
|
||||||
|
// Don't let the tokenizer go into raw text mode even when a <noscript>
|
||||||
|
// tag is in "in head noscript" insertion mode.
|
||||||
|
p.tokenizer.NextIsNotRawText()
|
||||||
// Ignore the token.
|
// Ignore the token.
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -1790,6 +1796,13 @@ func inSelectIM(p *parser) bool {
|
||||||
return true
|
return true
|
||||||
case a.Script, a.Template:
|
case a.Script, a.Template:
|
||||||
return inHeadIM(p)
|
return inHeadIM(p)
|
||||||
|
case a.Iframe, a.Noembed, a.Noframes, a.Noscript, a.Plaintext, a.Style, a.Title, a.Xmp:
|
||||||
|
// Don't let the tokenizer go into raw text mode when there are raw tags
|
||||||
|
// to be ignored. These tags should be ignored from the tokenizer
|
||||||
|
// properly.
|
||||||
|
p.tokenizer.NextIsNotRawText()
|
||||||
|
// Ignore the token.
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
case EndTagToken:
|
case EndTagToken:
|
||||||
switch p.tok.DataAtom {
|
switch p.tok.DataAtom {
|
||||||
|
|
|
@ -263,7 +263,7 @@ var voidElements = map[string]bool{
|
||||||
"hr": true,
|
"hr": true,
|
||||||
"img": true,
|
"img": true,
|
||||||
"input": true,
|
"input": true,
|
||||||
"keygen": true,
|
"keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility.
|
||||||
"link": true,
|
"link": true,
|
||||||
"meta": true,
|
"meta": true,
|
||||||
"param": true,
|
"param": true,
|
||||||
|
|
|
@ -154,12 +154,21 @@ func (t *Transport) pingTimeout() time.Duration {
|
||||||
|
|
||||||
// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.
|
// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.
|
||||||
// It returns an error if t1 has already been HTTP/2-enabled.
|
// It returns an error if t1 has already been HTTP/2-enabled.
|
||||||
|
//
|
||||||
|
// Use ConfigureTransports instead to configure the HTTP/2 Transport.
|
||||||
func ConfigureTransport(t1 *http.Transport) error {
|
func ConfigureTransport(t1 *http.Transport) error {
|
||||||
_, err := configureTransport(t1)
|
_, err := ConfigureTransports(t1)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func configureTransport(t1 *http.Transport) (*Transport, error) {
|
// ConfigureTransports configures a net/http HTTP/1 Transport to use HTTP/2.
|
||||||
|
// It returns a new HTTP/2 Transport for further configuration.
|
||||||
|
// It returns an error if t1 has already been HTTP/2-enabled.
|
||||||
|
func ConfigureTransports(t1 *http.Transport) (*Transport, error) {
|
||||||
|
return configureTransports(t1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureTransports(t1 *http.Transport) (*Transport, error) {
|
||||||
connPool := new(clientConnPool)
|
connPool := new(clientConnPool)
|
||||||
t2 := &Transport{
|
t2 := &Transport{
|
||||||
ConnPool: noDialClientConnPool{connPool},
|
ConnPool: noDialClientConnPool{connPool},
|
||||||
|
@ -689,6 +698,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
||||||
cc.inflow.add(transportDefaultConnFlow + initialWindowSize)
|
cc.inflow.add(transportDefaultConnFlow + initialWindowSize)
|
||||||
cc.bw.Flush()
|
cc.bw.Flush()
|
||||||
if cc.werr != nil {
|
if cc.werr != nil {
|
||||||
|
cc.Close()
|
||||||
return nil, cc.werr
|
return nil, cc.werr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1080,6 +1090,15 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
bodyWriter := cc.t.getBodyWriterState(cs, body)
|
bodyWriter := cc.t.getBodyWriterState(cs, body)
|
||||||
cs.on100 = bodyWriter.on100
|
cs.on100 = bodyWriter.on100
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
cc.wmu.Lock()
|
||||||
|
werr := cc.werr
|
||||||
|
cc.wmu.Unlock()
|
||||||
|
if werr != nil {
|
||||||
|
cc.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
cc.wmu.Lock()
|
cc.wmu.Lock()
|
||||||
endStream := !hasBody && !hasTrailers
|
endStream := !hasBody && !hasTrailers
|
||||||
werr := cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs)
|
werr := cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs)
|
||||||
|
@ -1129,6 +1148,9 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
// we can keep it.
|
// we can keep it.
|
||||||
bodyWriter.cancel()
|
bodyWriter.cancel()
|
||||||
cs.abortRequestBodyWrite(errStopReqBodyWrite)
|
cs.abortRequestBodyWrite(errStopReqBodyWrite)
|
||||||
|
if hasBody && !bodyWritten {
|
||||||
|
<-bodyWriter.resc
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if re.err != nil {
|
if re.err != nil {
|
||||||
cc.forgetStreamID(cs.ID)
|
cc.forgetStreamID(cs.ID)
|
||||||
|
@ -1149,6 +1171,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
} else {
|
} else {
|
||||||
bodyWriter.cancel()
|
bodyWriter.cancel()
|
||||||
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
||||||
|
<-bodyWriter.resc
|
||||||
}
|
}
|
||||||
cc.forgetStreamID(cs.ID)
|
cc.forgetStreamID(cs.ID)
|
||||||
return nil, cs.getStartedWrite(), errTimeout
|
return nil, cs.getStartedWrite(), errTimeout
|
||||||
|
@ -1158,6 +1181,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
} else {
|
} else {
|
||||||
bodyWriter.cancel()
|
bodyWriter.cancel()
|
||||||
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
||||||
|
<-bodyWriter.resc
|
||||||
}
|
}
|
||||||
cc.forgetStreamID(cs.ID)
|
cc.forgetStreamID(cs.ID)
|
||||||
return nil, cs.getStartedWrite(), ctx.Err()
|
return nil, cs.getStartedWrite(), ctx.Err()
|
||||||
|
@ -1167,6 +1191,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
} else {
|
} else {
|
||||||
bodyWriter.cancel()
|
bodyWriter.cancel()
|
||||||
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel)
|
||||||
|
<-bodyWriter.resc
|
||||||
}
|
}
|
||||||
cc.forgetStreamID(cs.ID)
|
cc.forgetStreamID(cs.ID)
|
||||||
return nil, cs.getStartedWrite(), errRequestCanceled
|
return nil, cs.getStartedWrite(), errRequestCanceled
|
||||||
|
@ -1176,6 +1201,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
// forgetStreamID.
|
// forgetStreamID.
|
||||||
return nil, cs.getStartedWrite(), cs.resetErr
|
return nil, cs.getStartedWrite(), cs.resetErr
|
||||||
case err := <-bodyWriter.resc:
|
case err := <-bodyWriter.resc:
|
||||||
|
bodyWritten = true
|
||||||
// Prefer the read loop's response, if available. Issue 16102.
|
// Prefer the read loop's response, if available. Issue 16102.
|
||||||
select {
|
select {
|
||||||
case re := <-readLoopResCh:
|
case re := <-readLoopResCh:
|
||||||
|
@ -1186,7 +1212,6 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
cc.forgetStreamID(cs.ID)
|
cc.forgetStreamID(cs.ID)
|
||||||
return nil, cs.getStartedWrite(), err
|
return nil, cs.getStartedWrite(), err
|
||||||
}
|
}
|
||||||
bodyWritten = true
|
|
||||||
if d := cc.responseHeaderTimeout(); d != 0 {
|
if d := cc.responseHeaderTimeout(); d != 0 {
|
||||||
timer := time.NewTimer(d)
|
timer := time.NewTimer(d)
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
||||||
|
|
||||||
// +build go1.14
|
// +build go1.14,!go1.16
|
||||||
|
|
||||||
package idna
|
package idna
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -39,34 +39,34 @@ func initOptions() {
|
||||||
|
|
||||||
func archInit() {
|
func archInit() {
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "android", "darwin", "ios", "netbsd", "openbsd":
|
case "freebsd":
|
||||||
// Android and iOS don't seem to allow reading these registers.
|
readARM64Registers()
|
||||||
//
|
case "linux", "netbsd":
|
||||||
// NetBSD:
|
doinit()
|
||||||
// ID_AA64ISAR0_EL1 is a privileged register and cannot be read from EL0.
|
default:
|
||||||
// It can be read via sysctl(3). Example for future implementers:
|
// Most platforms don't seem to allow reading these registers.
|
||||||
// https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c
|
|
||||||
//
|
//
|
||||||
// OpenBSD:
|
// OpenBSD:
|
||||||
// See https://golang.org/issue/31746
|
// See https://golang.org/issue/31746
|
||||||
//
|
setMinimalFeatures()
|
||||||
// Fake the minimal features expected by
|
|
||||||
// TestARM64minimalFeatures.
|
|
||||||
ARM64.HasASIMD = true
|
|
||||||
ARM64.HasFP = true
|
|
||||||
case "linux":
|
|
||||||
doinit()
|
|
||||||
default:
|
|
||||||
readARM64Registers()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setMinimalFeatures fakes the minimal ARM64 features expected by
|
||||||
|
// TestARM64minimalFeatures.
|
||||||
|
func setMinimalFeatures() {
|
||||||
|
ARM64.HasASIMD = true
|
||||||
|
ARM64.HasFP = true
|
||||||
|
}
|
||||||
|
|
||||||
func readARM64Registers() {
|
func readARM64Registers() {
|
||||||
Initialized = true
|
Initialized = true
|
||||||
|
|
||||||
// ID_AA64ISAR0_EL1
|
parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())
|
||||||
isar0 := getisar0()
|
}
|
||||||
|
|
||||||
|
func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {
|
||||||
|
// ID_AA64ISAR0_EL1
|
||||||
switch extractBits(isar0, 4, 7) {
|
switch extractBits(isar0, 4, 7) {
|
||||||
case 1:
|
case 1:
|
||||||
ARM64.HasAES = true
|
ARM64.HasAES = true
|
||||||
|
@ -124,8 +124,6 @@ func readARM64Registers() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ID_AA64ISAR1_EL1
|
// ID_AA64ISAR1_EL1
|
||||||
isar1 := getisar1()
|
|
||||||
|
|
||||||
switch extractBits(isar1, 0, 3) {
|
switch extractBits(isar1, 0, 3) {
|
||||||
case 1:
|
case 1:
|
||||||
ARM64.HasDCPOP = true
|
ARM64.HasDCPOP = true
|
||||||
|
@ -147,8 +145,6 @@ func readARM64Registers() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ID_AA64PFR0_EL1
|
// ID_AA64PFR0_EL1
|
||||||
pfr0 := getpfr0()
|
|
||||||
|
|
||||||
switch extractBits(pfr0, 16, 19) {
|
switch extractBits(pfr0, 16, 19) {
|
||||||
case 0:
|
case 0:
|
||||||
ARM64.HasFP = true
|
ARM64.HasFP = true
|
||||||
|
|
|
@ -17,86 +17,7 @@ const (
|
||||||
hwcap_VXE = 8192
|
hwcap_VXE = 8192
|
||||||
)
|
)
|
||||||
|
|
||||||
// bitIsSet reports whether the bit at index is set. The bit index
|
func initS390Xbase() {
|
||||||
// is in big endian order, so bit index 0 is the leftmost bit.
|
|
||||||
func bitIsSet(bits []uint64, index uint) bool {
|
|
||||||
return bits[index/64]&((1<<63)>>(index%64)) != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// function is the code for the named cryptographic function.
|
|
||||||
type function uint8
|
|
||||||
|
|
||||||
const (
|
|
||||||
// KM{,A,C,CTR} function codes
|
|
||||||
aes128 function = 18 // AES-128
|
|
||||||
aes192 function = 19 // AES-192
|
|
||||||
aes256 function = 20 // AES-256
|
|
||||||
|
|
||||||
// K{I,L}MD function codes
|
|
||||||
sha1 function = 1 // SHA-1
|
|
||||||
sha256 function = 2 // SHA-256
|
|
||||||
sha512 function = 3 // SHA-512
|
|
||||||
sha3_224 function = 32 // SHA3-224
|
|
||||||
sha3_256 function = 33 // SHA3-256
|
|
||||||
sha3_384 function = 34 // SHA3-384
|
|
||||||
sha3_512 function = 35 // SHA3-512
|
|
||||||
shake128 function = 36 // SHAKE-128
|
|
||||||
shake256 function = 37 // SHAKE-256
|
|
||||||
|
|
||||||
// KLMD function codes
|
|
||||||
ghash function = 65 // GHASH
|
|
||||||
)
|
|
||||||
|
|
||||||
// queryResult contains the result of a Query function
|
|
||||||
// call. Bits are numbered in big endian order so the
|
|
||||||
// leftmost bit (the MSB) is at index 0.
|
|
||||||
type queryResult struct {
|
|
||||||
bits [2]uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has reports whether the given functions are present.
|
|
||||||
func (q *queryResult) Has(fns ...function) bool {
|
|
||||||
if len(fns) == 0 {
|
|
||||||
panic("no function codes provided")
|
|
||||||
}
|
|
||||||
for _, f := range fns {
|
|
||||||
if !bitIsSet(q.bits[:], uint(f)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// facility is a bit index for the named facility.
|
|
||||||
type facility uint8
|
|
||||||
|
|
||||||
const (
|
|
||||||
// cryptography facilities
|
|
||||||
msa4 facility = 77 // message-security-assist extension 4
|
|
||||||
msa8 facility = 146 // message-security-assist extension 8
|
|
||||||
)
|
|
||||||
|
|
||||||
// facilityList contains the result of an STFLE call.
|
|
||||||
// Bits are numbered in big endian order so the
|
|
||||||
// leftmost bit (the MSB) is at index 0.
|
|
||||||
type facilityList struct {
|
|
||||||
bits [4]uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has reports whether the given facilities are present.
|
|
||||||
func (s *facilityList) Has(fs ...facility) bool {
|
|
||||||
if len(fs) == 0 {
|
|
||||||
panic("no facility bits provided")
|
|
||||||
}
|
|
||||||
for _, f := range fs {
|
|
||||||
if !bitIsSet(s.bits[:], uint(f)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func doinit() {
|
|
||||||
// test HWCAP bit vector
|
// test HWCAP bit vector
|
||||||
has := func(featureMask uint) bool {
|
has := func(featureMask uint) bool {
|
||||||
return hwCap&featureMask == featureMask
|
return hwCap&featureMask == featureMask
|
||||||
|
@ -116,44 +37,4 @@ func doinit() {
|
||||||
if S390X.HasVX {
|
if S390X.HasVX {
|
||||||
S390X.HasVXE = has(hwcap_VXE)
|
S390X.HasVXE = has(hwcap_VXE)
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need implementations of stfle, km and so on
|
|
||||||
// to detect cryptographic features.
|
|
||||||
if !haveAsmFunctions() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// optional cryptographic functions
|
|
||||||
if S390X.HasMSA {
|
|
||||||
aes := []function{aes128, aes192, aes256}
|
|
||||||
|
|
||||||
// cipher message
|
|
||||||
km, kmc := kmQuery(), kmcQuery()
|
|
||||||
S390X.HasAES = km.Has(aes...)
|
|
||||||
S390X.HasAESCBC = kmc.Has(aes...)
|
|
||||||
if S390X.HasSTFLE {
|
|
||||||
facilities := stfle()
|
|
||||||
if facilities.Has(msa4) {
|
|
||||||
kmctr := kmctrQuery()
|
|
||||||
S390X.HasAESCTR = kmctr.Has(aes...)
|
|
||||||
}
|
|
||||||
if facilities.Has(msa8) {
|
|
||||||
kma := kmaQuery()
|
|
||||||
S390X.HasAESGCM = kma.Has(aes...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// compute message digest
|
|
||||||
kimd := kimdQuery() // intermediate (no padding)
|
|
||||||
klmd := klmdQuery() // last (padding)
|
|
||||||
S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
|
|
||||||
S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
|
|
||||||
S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
|
|
||||||
S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
|
|
||||||
sha3 := []function{
|
|
||||||
sha3_224, sha3_256, sha3_384, sha3_512,
|
|
||||||
shake128, shake256,
|
|
||||||
}
|
|
||||||
S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Minimal copy of functionality from x/sys/unix so the cpu package can call
|
||||||
|
// sysctl without depending on x/sys/unix.
|
||||||
|
|
||||||
|
const (
|
||||||
|
_CTL_QUERY = -2
|
||||||
|
|
||||||
|
_SYSCTL_VERS_1 = 0x1000000
|
||||||
|
)
|
||||||
|
|
||||||
|
var _zero uintptr
|
||||||
|
|
||||||
|
func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, errno := syscall.Syscall6(
|
||||||
|
syscall.SYS___SYSCTL,
|
||||||
|
uintptr(_p0),
|
||||||
|
uintptr(len(mib)),
|
||||||
|
uintptr(unsafe.Pointer(old)),
|
||||||
|
uintptr(unsafe.Pointer(oldlen)),
|
||||||
|
uintptr(unsafe.Pointer(new)),
|
||||||
|
uintptr(newlen))
|
||||||
|
if errno != 0 {
|
||||||
|
return errno
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type sysctlNode struct {
|
||||||
|
Flags uint32
|
||||||
|
Num int32
|
||||||
|
Name [32]int8
|
||||||
|
Ver uint32
|
||||||
|
__rsvd uint32
|
||||||
|
Un [16]byte
|
||||||
|
_sysctl_size [8]byte
|
||||||
|
_sysctl_func [8]byte
|
||||||
|
_sysctl_parent [8]byte
|
||||||
|
_sysctl_desc [8]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func sysctlNodes(mib []int32) ([]sysctlNode, error) {
|
||||||
|
var olen uintptr
|
||||||
|
|
||||||
|
// Get a list of all sysctl nodes below the given MIB by performing
|
||||||
|
// a sysctl for the given MIB with CTL_QUERY appended.
|
||||||
|
mib = append(mib, _CTL_QUERY)
|
||||||
|
qnode := sysctlNode{Flags: _SYSCTL_VERS_1}
|
||||||
|
qp := (*byte)(unsafe.Pointer(&qnode))
|
||||||
|
sz := unsafe.Sizeof(qnode)
|
||||||
|
if err := sysctl(mib, nil, &olen, qp, sz); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now that we know the size, get the actual nodes.
|
||||||
|
nodes := make([]sysctlNode, olen/sz)
|
||||||
|
np := (*byte)(unsafe.Pointer(&nodes[0]))
|
||||||
|
if err := sysctl(mib, np, &olen, qp, sz); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodes, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func nametomib(name string) ([]int32, error) {
|
||||||
|
// Split name into components.
|
||||||
|
var parts []string
|
||||||
|
last := 0
|
||||||
|
for i := 0; i < len(name); i++ {
|
||||||
|
if name[i] == '.' {
|
||||||
|
parts = append(parts, name[last:i])
|
||||||
|
last = i + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parts = append(parts, name[last:])
|
||||||
|
|
||||||
|
mib := []int32{}
|
||||||
|
// Discover the nodes and construct the MIB OID.
|
||||||
|
for partno, part := range parts {
|
||||||
|
nodes, err := sysctlNodes(mib)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, node := range nodes {
|
||||||
|
n := make([]byte, 0)
|
||||||
|
for i := range node.Name {
|
||||||
|
if node.Name[i] != 0 {
|
||||||
|
n = append(n, byte(node.Name[i]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if string(n) == part {
|
||||||
|
mib = append(mib, int32(node.Num))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(mib) != partno+1 {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mib, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h>
|
||||||
|
type aarch64SysctlCPUID struct {
|
||||||
|
midr uint64 /* Main ID Register */
|
||||||
|
revidr uint64 /* Revision ID Register */
|
||||||
|
mpidr uint64 /* Multiprocessor Affinity Register */
|
||||||
|
aa64dfr0 uint64 /* A64 Debug Feature Register 0 */
|
||||||
|
aa64dfr1 uint64 /* A64 Debug Feature Register 1 */
|
||||||
|
aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */
|
||||||
|
aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */
|
||||||
|
aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */
|
||||||
|
aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */
|
||||||
|
aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */
|
||||||
|
aa64pfr0 uint64 /* A64 Processor Feature Register 0 */
|
||||||
|
aa64pfr1 uint64 /* A64 Processor Feature Register 1 */
|
||||||
|
aa64zfr0 uint64 /* A64 SVE Feature ID Register 0 */
|
||||||
|
mvfr0 uint32 /* Media and VFP Feature Register 0 */
|
||||||
|
mvfr1 uint32 /* Media and VFP Feature Register 1 */
|
||||||
|
mvfr2 uint32 /* Media and VFP Feature Register 2 */
|
||||||
|
pad uint32
|
||||||
|
clidr uint64 /* Cache Level ID Register */
|
||||||
|
ctr uint64 /* Cache Type Register */
|
||||||
|
}
|
||||||
|
|
||||||
|
func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) {
|
||||||
|
mib, err := nametomib(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out := aarch64SysctlCPUID{}
|
||||||
|
n := unsafe.Sizeof(out)
|
||||||
|
_, _, errno := syscall.Syscall6(
|
||||||
|
syscall.SYS___SYSCTL,
|
||||||
|
uintptr(unsafe.Pointer(&mib[0])),
|
||||||
|
uintptr(len(mib)),
|
||||||
|
uintptr(unsafe.Pointer(&out)),
|
||||||
|
uintptr(unsafe.Pointer(&n)),
|
||||||
|
uintptr(0),
|
||||||
|
uintptr(0))
|
||||||
|
if errno != 0 {
|
||||||
|
return nil, errno
|
||||||
|
}
|
||||||
|
return &out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func doinit() {
|
||||||
|
cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id")
|
||||||
|
if err != nil {
|
||||||
|
setMinimalFeatures()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)
|
||||||
|
|
||||||
|
Initialized = true
|
||||||
|
}
|
|
@ -2,7 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build !linux,arm64
|
// +build !linux,!netbsd
|
||||||
|
// +build arm64
|
||||||
|
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// +build !linux
|
||||||
|
// +build mips64 mips64le
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
func archInit() {
|
||||||
|
Initialized = true
|
||||||
|
}
|
|
@ -8,10 +8,10 @@ const cacheLineSize = 256
|
||||||
|
|
||||||
func initOptions() {
|
func initOptions() {
|
||||||
options = []option{
|
options = []option{
|
||||||
{Name: "zarch", Feature: &S390X.HasZARCH},
|
{Name: "zarch", Feature: &S390X.HasZARCH, Required: true},
|
||||||
{Name: "stfle", Feature: &S390X.HasSTFLE},
|
{Name: "stfle", Feature: &S390X.HasSTFLE, Required: true},
|
||||||
{Name: "ldisp", Feature: &S390X.HasLDISP},
|
{Name: "ldisp", Feature: &S390X.HasLDISP, Required: true},
|
||||||
{Name: "eimm", Feature: &S390X.HasEIMM},
|
{Name: "eimm", Feature: &S390X.HasEIMM, Required: true},
|
||||||
{Name: "dfp", Feature: &S390X.HasDFP},
|
{Name: "dfp", Feature: &S390X.HasDFP},
|
||||||
{Name: "etf3eh", Feature: &S390X.HasETF3EH},
|
{Name: "etf3eh", Feature: &S390X.HasETF3EH},
|
||||||
{Name: "msa", Feature: &S390X.HasMSA},
|
{Name: "msa", Feature: &S390X.HasMSA},
|
||||||
|
@ -28,3 +28,145 @@ func initOptions() {
|
||||||
{Name: "vxe", Feature: &S390X.HasVXE},
|
{Name: "vxe", Feature: &S390X.HasVXE},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// bitIsSet reports whether the bit at index is set. The bit index
|
||||||
|
// is in big endian order, so bit index 0 is the leftmost bit.
|
||||||
|
func bitIsSet(bits []uint64, index uint) bool {
|
||||||
|
return bits[index/64]&((1<<63)>>(index%64)) != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// facility is a bit index for the named facility.
|
||||||
|
type facility uint8
|
||||||
|
|
||||||
|
const (
|
||||||
|
// mandatory facilities
|
||||||
|
zarch facility = 1 // z architecture mode is active
|
||||||
|
stflef facility = 7 // store-facility-list-extended
|
||||||
|
ldisp facility = 18 // long-displacement
|
||||||
|
eimm facility = 21 // extended-immediate
|
||||||
|
|
||||||
|
// miscellaneous facilities
|
||||||
|
dfp facility = 42 // decimal-floating-point
|
||||||
|
etf3eh facility = 30 // extended-translation 3 enhancement
|
||||||
|
|
||||||
|
// cryptography facilities
|
||||||
|
msa facility = 17 // message-security-assist
|
||||||
|
msa3 facility = 76 // message-security-assist extension 3
|
||||||
|
msa4 facility = 77 // message-security-assist extension 4
|
||||||
|
msa5 facility = 57 // message-security-assist extension 5
|
||||||
|
msa8 facility = 146 // message-security-assist extension 8
|
||||||
|
msa9 facility = 155 // message-security-assist extension 9
|
||||||
|
|
||||||
|
// vector facilities
|
||||||
|
vx facility = 129 // vector facility
|
||||||
|
vxe facility = 135 // vector-enhancements 1
|
||||||
|
vxe2 facility = 148 // vector-enhancements 2
|
||||||
|
)
|
||||||
|
|
||||||
|
// facilityList contains the result of an STFLE call.
|
||||||
|
// Bits are numbered in big endian order so the
|
||||||
|
// leftmost bit (the MSB) is at index 0.
|
||||||
|
type facilityList struct {
|
||||||
|
bits [4]uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// Has reports whether the given facilities are present.
|
||||||
|
func (s *facilityList) Has(fs ...facility) bool {
|
||||||
|
if len(fs) == 0 {
|
||||||
|
panic("no facility bits provided")
|
||||||
|
}
|
||||||
|
for _, f := range fs {
|
||||||
|
if !bitIsSet(s.bits[:], uint(f)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// function is the code for the named cryptographic function.
|
||||||
|
type function uint8
|
||||||
|
|
||||||
|
const (
|
||||||
|
// KM{,A,C,CTR} function codes
|
||||||
|
aes128 function = 18 // AES-128
|
||||||
|
aes192 function = 19 // AES-192
|
||||||
|
aes256 function = 20 // AES-256
|
||||||
|
|
||||||
|
// K{I,L}MD function codes
|
||||||
|
sha1 function = 1 // SHA-1
|
||||||
|
sha256 function = 2 // SHA-256
|
||||||
|
sha512 function = 3 // SHA-512
|
||||||
|
sha3_224 function = 32 // SHA3-224
|
||||||
|
sha3_256 function = 33 // SHA3-256
|
||||||
|
sha3_384 function = 34 // SHA3-384
|
||||||
|
sha3_512 function = 35 // SHA3-512
|
||||||
|
shake128 function = 36 // SHAKE-128
|
||||||
|
shake256 function = 37 // SHAKE-256
|
||||||
|
|
||||||
|
// KLMD function codes
|
||||||
|
ghash function = 65 // GHASH
|
||||||
|
)
|
||||||
|
|
||||||
|
// queryResult contains the result of a Query function
|
||||||
|
// call. Bits are numbered in big endian order so the
|
||||||
|
// leftmost bit (the MSB) is at index 0.
|
||||||
|
type queryResult struct {
|
||||||
|
bits [2]uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// Has reports whether the given functions are present.
|
||||||
|
func (q *queryResult) Has(fns ...function) bool {
|
||||||
|
if len(fns) == 0 {
|
||||||
|
panic("no function codes provided")
|
||||||
|
}
|
||||||
|
for _, f := range fns {
|
||||||
|
if !bitIsSet(q.bits[:], uint(f)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func doinit() {
|
||||||
|
initS390Xbase()
|
||||||
|
|
||||||
|
// We need implementations of stfle, km and so on
|
||||||
|
// to detect cryptographic features.
|
||||||
|
if !haveAsmFunctions() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// optional cryptographic functions
|
||||||
|
if S390X.HasMSA {
|
||||||
|
aes := []function{aes128, aes192, aes256}
|
||||||
|
|
||||||
|
// cipher message
|
||||||
|
km, kmc := kmQuery(), kmcQuery()
|
||||||
|
S390X.HasAES = km.Has(aes...)
|
||||||
|
S390X.HasAESCBC = kmc.Has(aes...)
|
||||||
|
if S390X.HasSTFLE {
|
||||||
|
facilities := stfle()
|
||||||
|
if facilities.Has(msa4) {
|
||||||
|
kmctr := kmctrQuery()
|
||||||
|
S390X.HasAESCTR = kmctr.Has(aes...)
|
||||||
|
}
|
||||||
|
if facilities.Has(msa8) {
|
||||||
|
kma := kmaQuery()
|
||||||
|
S390X.HasAESGCM = kma.Has(aes...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// compute message digest
|
||||||
|
kimd := kimdQuery() // intermediate (no padding)
|
||||||
|
klmd := klmdQuery() // last (padding)
|
||||||
|
S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
|
||||||
|
S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
|
||||||
|
S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
|
||||||
|
S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
|
||||||
|
sha3 := []function{
|
||||||
|
sha3_224, sha3_256, sha3_384, sha3_512,
|
||||||
|
shake128, shake256,
|
||||||
|
}
|
||||||
|
S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
func archInit() {
|
||||||
|
doinit()
|
||||||
|
Initialized = true
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
func initS390Xbase() {
|
||||||
|
// get the facilities list
|
||||||
|
facilities := stfle()
|
||||||
|
|
||||||
|
// mandatory
|
||||||
|
S390X.HasZARCH = facilities.Has(zarch)
|
||||||
|
S390X.HasSTFLE = facilities.Has(stflef)
|
||||||
|
S390X.HasLDISP = facilities.Has(ldisp)
|
||||||
|
S390X.HasEIMM = facilities.Has(eimm)
|
||||||
|
|
||||||
|
// optional
|
||||||
|
S390X.HasETF3EH = facilities.Has(etf3eh)
|
||||||
|
S390X.HasDFP = facilities.Has(dfp)
|
||||||
|
S390X.HasMSA = facilities.Has(msa)
|
||||||
|
S390X.HasVX = facilities.Has(vx)
|
||||||
|
if S390X.HasVX {
|
||||||
|
S390X.HasVXE = facilities.Has(vxe)
|
||||||
|
}
|
||||||
|
}
|
|
@ -66,6 +66,7 @@ includes_Darwin='
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/sockio.h>
|
#include <sys/sockio.h>
|
||||||
|
#include <sys/sys_domain.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
|
@ -232,6 +233,7 @@ struct ltchars {
|
||||||
#include <linux/net_namespace.h>
|
#include <linux/net_namespace.h>
|
||||||
#include <linux/nsfs.h>
|
#include <linux/nsfs.h>
|
||||||
#include <linux/perf_event.h>
|
#include <linux/perf_event.h>
|
||||||
|
#include <linux/pps.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
|
|
|
@ -24,7 +24,13 @@
|
||||||
// holds a value of type syscall.Errno.
|
// holds a value of type syscall.Errno.
|
||||||
package unix // import "golang.org/x/sys/unix"
|
package unix // import "golang.org/x/sys/unix"
|
||||||
|
|
||||||
import "strings"
|
import (
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
|
)
|
||||||
|
|
||||||
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
||||||
// containing the text of s. If s contains a NUL byte at any
|
// containing the text of s. If s contains a NUL byte at any
|
||||||
|
@ -49,5 +55,40 @@ func BytePtrFromString(s string) (*byte, error) {
|
||||||
return &a[0], nil
|
return &a[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
|
||||||
|
// bytes after the NUL removed.
|
||||||
|
func ByteSliceToString(s []byte) string {
|
||||||
|
if i := bytes.IndexByte(s, 0); i != -1 {
|
||||||
|
s = s[:i]
|
||||||
|
}
|
||||||
|
return string(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
|
||||||
|
// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
|
||||||
|
// at a zero byte; if the zero byte is not present, the program may crash.
|
||||||
|
func BytePtrToString(p *byte) string {
|
||||||
|
if p == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if *p == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find NUL terminator.
|
||||||
|
n := 0
|
||||||
|
for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
|
||||||
|
ptr = unsafe.Pointer(uintptr(ptr) + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var s []byte
|
||||||
|
h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
||||||
|
h.Data = unsafe.Pointer(p)
|
||||||
|
h.Len = n
|
||||||
|
h.Cap = n
|
||||||
|
|
||||||
|
return string(s)
|
||||||
|
}
|
||||||
|
|
||||||
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
||||||
var _zero uintptr
|
var _zero uintptr
|
||||||
|
|
|
@ -277,7 +277,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
}
|
}
|
||||||
return sa, nil
|
return sa, nil
|
||||||
}
|
}
|
||||||
return nil, EAFNOSUPPORT
|
return anyToSockaddrGOOS(fd, rsa)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Accept(fd int) (nfd int, sa Sockaddr, err error) {
|
func Accept(fd int) (nfd int, sa Sockaddr, err error) {
|
||||||
|
|
|
@ -31,10 +31,40 @@ type SockaddrDatalink struct {
|
||||||
raw RawSockaddrDatalink
|
raw RawSockaddrDatalink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.
|
||||||
|
type SockaddrCtl struct {
|
||||||
|
ID uint32
|
||||||
|
Unit uint32
|
||||||
|
raw RawSockaddrCtl
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
|
sa.raw.Sc_len = SizeofSockaddrCtl
|
||||||
|
sa.raw.Sc_family = AF_SYSTEM
|
||||||
|
sa.raw.Ss_sysaddr = AF_SYS_CONTROL
|
||||||
|
sa.raw.Sc_id = sa.ID
|
||||||
|
sa.raw.Sc_unit = sa.Unit
|
||||||
|
return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
|
switch rsa.Addr.Family {
|
||||||
|
case AF_SYSTEM:
|
||||||
|
pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))
|
||||||
|
if pp.Ss_sysaddr == AF_SYS_CONTROL {
|
||||||
|
sa := new(SockaddrCtl)
|
||||||
|
sa.ID = pp.Sc_id
|
||||||
|
sa.Unit = pp.Sc_unit
|
||||||
|
return sa, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, EAFNOSUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
// Some external packages rely on SYS___SYSCTL being defined to implement their
|
// Some external packages rely on SYS___SYSCTL being defined to implement their
|
||||||
// own sysctl wrappers. Provide it here, even though direct syscalls are no
|
// own sysctl wrappers. Provide it here, even though direct syscalls are no
|
||||||
// longer supported on darwin.
|
// longer supported on darwin.
|
||||||
const SYS___SYSCTL = 202
|
const SYS___SYSCTL = SYS_SYSCTL
|
||||||
|
|
||||||
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
||||||
func nametomib(name string) (mib []_C_int, err error) {
|
func nametomib(name string) (mib []_C_int, err error) {
|
||||||
|
@ -264,6 +294,29 @@ func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IfreqMTU is struct ifreq used to get or set a network device's MTU.
|
||||||
|
type IfreqMTU struct {
|
||||||
|
Name [IFNAMSIZ]byte
|
||||||
|
MTU int32
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU
|
||||||
|
// of the network device specified by ifname.
|
||||||
|
func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {
|
||||||
|
var ifreq IfreqMTU
|
||||||
|
copy(ifreq.Name[:], ifname)
|
||||||
|
err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq)))
|
||||||
|
return &ifreq, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU
|
||||||
|
// of the network device specified by ifreq.Name.
|
||||||
|
func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {
|
||||||
|
err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq)))
|
||||||
|
runtime.KeepAlive(ifreq)
|
||||||
|
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 {
|
func Uname(uname *Utsname) error {
|
||||||
|
|
|
@ -47,6 +47,10 @@ type SockaddrDatalink struct {
|
||||||
raw RawSockaddrDatalink
|
raw RawSockaddrDatalink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
|
return nil, EAFNOSUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
||||||
func nametomib(name string) (mib []_C_int, err error) {
|
func nametomib(name string) (mib []_C_int, err error) {
|
||||||
const siz = unsafe.Sizeof(mib[0])
|
const siz = unsafe.Sizeof(mib[0])
|
||||||
|
|
|
@ -54,6 +54,10 @@ type SockaddrDatalink struct {
|
||||||
raw RawSockaddrDatalink
|
raw RawSockaddrDatalink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
|
return nil, EAFNOSUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
// Translate "kern.hostname" to []_C_int{0,1,2,3}.
|
||||||
func nametomib(name string) (mib []_C_int, err error) {
|
func nametomib(name string) (mib []_C_int, err error) {
|
||||||
const siz = unsafe.Sizeof(mib[0])
|
const siz = unsafe.Sizeof(mib[0])
|
||||||
|
|
|
@ -31,6 +31,10 @@ type SockaddrDatalink struct {
|
||||||
raw RawSockaddrDatalink
|
raw RawSockaddrDatalink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
|
return nil, EAFNOSUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||||
|
|
||||||
func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
|
func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
|
||||||
|
|
|
@ -31,6 +31,10 @@ type SockaddrDatalink struct {
|
||||||
raw RawSockaddrDatalink
|
raw RawSockaddrDatalink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
|
return nil, EAFNOSUPPORT
|
||||||
|
}
|
||||||
|
|
||||||
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||||
|
|
||||||
func nametomib(name string) (mib []_C_int, err error) {
|
func nametomib(name string) (mib []_C_int, err error) {
|
||||||
|
|
|
@ -45,6 +45,7 @@ const (
|
||||||
AF_SIP = 0x18
|
AF_SIP = 0x18
|
||||||
AF_SNA = 0xb
|
AF_SNA = 0xb
|
||||||
AF_SYSTEM = 0x20
|
AF_SYSTEM = 0x20
|
||||||
|
AF_SYS_CONTROL = 0x2
|
||||||
AF_UNIX = 0x1
|
AF_UNIX = 0x1
|
||||||
AF_UNSPEC = 0x0
|
AF_UNSPEC = 0x0
|
||||||
AF_UTUN = 0x26
|
AF_UTUN = 0x26
|
||||||
|
|
|
@ -45,6 +45,7 @@ const (
|
||||||
AF_SIP = 0x18
|
AF_SIP = 0x18
|
||||||
AF_SNA = 0xb
|
AF_SNA = 0xb
|
||||||
AF_SYSTEM = 0x20
|
AF_SYSTEM = 0x20
|
||||||
|
AF_SYS_CONTROL = 0x2
|
||||||
AF_UNIX = 0x1
|
AF_UNIX = 0x1
|
||||||
AF_UNSPEC = 0x0
|
AF_UNSPEC = 0x0
|
||||||
AF_UTUN = 0x26
|
AF_UTUN = 0x26
|
||||||
|
|
|
@ -45,6 +45,7 @@ const (
|
||||||
AF_SIP = 0x18
|
AF_SIP = 0x18
|
||||||
AF_SNA = 0xb
|
AF_SNA = 0xb
|
||||||
AF_SYSTEM = 0x20
|
AF_SYSTEM = 0x20
|
||||||
|
AF_SYS_CONTROL = 0x2
|
||||||
AF_UNIX = 0x1
|
AF_UNIX = 0x1
|
||||||
AF_UNSPEC = 0x0
|
AF_UNSPEC = 0x0
|
||||||
AF_UTUN = 0x26
|
AF_UTUN = 0x26
|
||||||
|
|
|
@ -45,6 +45,7 @@ const (
|
||||||
AF_SIP = 0x18
|
AF_SIP = 0x18
|
||||||
AF_SNA = 0xb
|
AF_SNA = 0xb
|
||||||
AF_SYSTEM = 0x20
|
AF_SYSTEM = 0x20
|
||||||
|
AF_SYS_CONTROL = 0x2
|
||||||
AF_UNIX = 0x1
|
AF_UNIX = 0x1
|
||||||
AF_UNSPEC = 0x0
|
AF_UNSPEC = 0x0
|
||||||
AF_UTUN = 0x26
|
AF_UTUN = 0x26
|
||||||
|
|
|
@ -0,0 +1,437 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// +build 386,darwin
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
// Deprecated: Use libSystem wrappers instead of direct syscalls.
|
||||||
|
const (
|
||||||
|
SYS_SYSCALL = 0
|
||||||
|
SYS_EXIT = 1
|
||||||
|
SYS_FORK = 2
|
||||||
|
SYS_READ = 3
|
||||||
|
SYS_WRITE = 4
|
||||||
|
SYS_OPEN = 5
|
||||||
|
SYS_CLOSE = 6
|
||||||
|
SYS_WAIT4 = 7
|
||||||
|
SYS_LINK = 9
|
||||||
|
SYS_UNLINK = 10
|
||||||
|
SYS_CHDIR = 12
|
||||||
|
SYS_FCHDIR = 13
|
||||||
|
SYS_MKNOD = 14
|
||||||
|
SYS_CHMOD = 15
|
||||||
|
SYS_CHOWN = 16
|
||||||
|
SYS_GETFSSTAT = 18
|
||||||
|
SYS_GETPID = 20
|
||||||
|
SYS_SETUID = 23
|
||||||
|
SYS_GETUID = 24
|
||||||
|
SYS_GETEUID = 25
|
||||||
|
SYS_PTRACE = 26
|
||||||
|
SYS_RECVMSG = 27
|
||||||
|
SYS_SENDMSG = 28
|
||||||
|
SYS_RECVFROM = 29
|
||||||
|
SYS_ACCEPT = 30
|
||||||
|
SYS_GETPEERNAME = 31
|
||||||
|
SYS_GETSOCKNAME = 32
|
||||||
|
SYS_ACCESS = 33
|
||||||
|
SYS_CHFLAGS = 34
|
||||||
|
SYS_FCHFLAGS = 35
|
||||||
|
SYS_SYNC = 36
|
||||||
|
SYS_KILL = 37
|
||||||
|
SYS_GETPPID = 39
|
||||||
|
SYS_DUP = 41
|
||||||
|
SYS_PIPE = 42
|
||||||
|
SYS_GETEGID = 43
|
||||||
|
SYS_SIGACTION = 46
|
||||||
|
SYS_GETGID = 47
|
||||||
|
SYS_SIGPROCMASK = 48
|
||||||
|
SYS_GETLOGIN = 49
|
||||||
|
SYS_SETLOGIN = 50
|
||||||
|
SYS_ACCT = 51
|
||||||
|
SYS_SIGPENDING = 52
|
||||||
|
SYS_SIGALTSTACK = 53
|
||||||
|
SYS_IOCTL = 54
|
||||||
|
SYS_REBOOT = 55
|
||||||
|
SYS_REVOKE = 56
|
||||||
|
SYS_SYMLINK = 57
|
||||||
|
SYS_READLINK = 58
|
||||||
|
SYS_EXECVE = 59
|
||||||
|
SYS_UMASK = 60
|
||||||
|
SYS_CHROOT = 61
|
||||||
|
SYS_MSYNC = 65
|
||||||
|
SYS_VFORK = 66
|
||||||
|
SYS_MUNMAP = 73
|
||||||
|
SYS_MPROTECT = 74
|
||||||
|
SYS_MADVISE = 75
|
||||||
|
SYS_MINCORE = 78
|
||||||
|
SYS_GETGROUPS = 79
|
||||||
|
SYS_SETGROUPS = 80
|
||||||
|
SYS_GETPGRP = 81
|
||||||
|
SYS_SETPGID = 82
|
||||||
|
SYS_SETITIMER = 83
|
||||||
|
SYS_SWAPON = 85
|
||||||
|
SYS_GETITIMER = 86
|
||||||
|
SYS_GETDTABLESIZE = 89
|
||||||
|
SYS_DUP2 = 90
|
||||||
|
SYS_FCNTL = 92
|
||||||
|
SYS_SELECT = 93
|
||||||
|
SYS_FSYNC = 95
|
||||||
|
SYS_SETPRIORITY = 96
|
||||||
|
SYS_SOCKET = 97
|
||||||
|
SYS_CONNECT = 98
|
||||||
|
SYS_GETPRIORITY = 100
|
||||||
|
SYS_BIND = 104
|
||||||
|
SYS_SETSOCKOPT = 105
|
||||||
|
SYS_LISTEN = 106
|
||||||
|
SYS_SIGSUSPEND = 111
|
||||||
|
SYS_GETTIMEOFDAY = 116
|
||||||
|
SYS_GETRUSAGE = 117
|
||||||
|
SYS_GETSOCKOPT = 118
|
||||||
|
SYS_READV = 120
|
||||||
|
SYS_WRITEV = 121
|
||||||
|
SYS_SETTIMEOFDAY = 122
|
||||||
|
SYS_FCHOWN = 123
|
||||||
|
SYS_FCHMOD = 124
|
||||||
|
SYS_SETREUID = 126
|
||||||
|
SYS_SETREGID = 127
|
||||||
|
SYS_RENAME = 128
|
||||||
|
SYS_FLOCK = 131
|
||||||
|
SYS_MKFIFO = 132
|
||||||
|
SYS_SENDTO = 133
|
||||||
|
SYS_SHUTDOWN = 134
|
||||||
|
SYS_SOCKETPAIR = 135
|
||||||
|
SYS_MKDIR = 136
|
||||||
|
SYS_RMDIR = 137
|
||||||
|
SYS_UTIMES = 138
|
||||||
|
SYS_FUTIMES = 139
|
||||||
|
SYS_ADJTIME = 140
|
||||||
|
SYS_GETHOSTUUID = 142
|
||||||
|
SYS_SETSID = 147
|
||||||
|
SYS_GETPGID = 151
|
||||||
|
SYS_SETPRIVEXEC = 152
|
||||||
|
SYS_PREAD = 153
|
||||||
|
SYS_PWRITE = 154
|
||||||
|
SYS_NFSSVC = 155
|
||||||
|
SYS_STATFS = 157
|
||||||
|
SYS_FSTATFS = 158
|
||||||
|
SYS_UNMOUNT = 159
|
||||||
|
SYS_GETFH = 161
|
||||||
|
SYS_QUOTACTL = 165
|
||||||
|
SYS_MOUNT = 167
|
||||||
|
SYS_CSOPS = 169
|
||||||
|
SYS_CSOPS_AUDITTOKEN = 170
|
||||||
|
SYS_WAITID = 173
|
||||||
|
SYS_KDEBUG_TYPEFILTER = 177
|
||||||
|
SYS_KDEBUG_TRACE_STRING = 178
|
||||||
|
SYS_KDEBUG_TRACE64 = 179
|
||||||
|
SYS_KDEBUG_TRACE = 180
|
||||||
|
SYS_SETGID = 181
|
||||||
|
SYS_SETEGID = 182
|
||||||
|
SYS_SETEUID = 183
|
||||||
|
SYS_SIGRETURN = 184
|
||||||
|
SYS_THREAD_SELFCOUNTS = 186
|
||||||
|
SYS_FDATASYNC = 187
|
||||||
|
SYS_STAT = 188
|
||||||
|
SYS_FSTAT = 189
|
||||||
|
SYS_LSTAT = 190
|
||||||
|
SYS_PATHCONF = 191
|
||||||
|
SYS_FPATHCONF = 192
|
||||||
|
SYS_GETRLIMIT = 194
|
||||||
|
SYS_SETRLIMIT = 195
|
||||||
|
SYS_GETDIRENTRIES = 196
|
||||||
|
SYS_MMAP = 197
|
||||||
|
SYS_LSEEK = 199
|
||||||
|
SYS_TRUNCATE = 200
|
||||||
|
SYS_FTRUNCATE = 201
|
||||||
|
SYS_SYSCTL = 202
|
||||||
|
SYS_MLOCK = 203
|
||||||
|
SYS_MUNLOCK = 204
|
||||||
|
SYS_UNDELETE = 205
|
||||||
|
SYS_OPEN_DPROTECTED_NP = 216
|
||||||
|
SYS_GETATTRLIST = 220
|
||||||
|
SYS_SETATTRLIST = 221
|
||||||
|
SYS_GETDIRENTRIESATTR = 222
|
||||||
|
SYS_EXCHANGEDATA = 223
|
||||||
|
SYS_SEARCHFS = 225
|
||||||
|
SYS_DELETE = 226
|
||||||
|
SYS_COPYFILE = 227
|
||||||
|
SYS_FGETATTRLIST = 228
|
||||||
|
SYS_FSETATTRLIST = 229
|
||||||
|
SYS_POLL = 230
|
||||||
|
SYS_WATCHEVENT = 231
|
||||||
|
SYS_WAITEVENT = 232
|
||||||
|
SYS_MODWATCH = 233
|
||||||
|
SYS_GETXATTR = 234
|
||||||
|
SYS_FGETXATTR = 235
|
||||||
|
SYS_SETXATTR = 236
|
||||||
|
SYS_FSETXATTR = 237
|
||||||
|
SYS_REMOVEXATTR = 238
|
||||||
|
SYS_FREMOVEXATTR = 239
|
||||||
|
SYS_LISTXATTR = 240
|
||||||
|
SYS_FLISTXATTR = 241
|
||||||
|
SYS_FSCTL = 242
|
||||||
|
SYS_INITGROUPS = 243
|
||||||
|
SYS_POSIX_SPAWN = 244
|
||||||
|
SYS_FFSCTL = 245
|
||||||
|
SYS_NFSCLNT = 247
|
||||||
|
SYS_FHOPEN = 248
|
||||||
|
SYS_MINHERIT = 250
|
||||||
|
SYS_SEMSYS = 251
|
||||||
|
SYS_MSGSYS = 252
|
||||||
|
SYS_SHMSYS = 253
|
||||||
|
SYS_SEMCTL = 254
|
||||||
|
SYS_SEMGET = 255
|
||||||
|
SYS_SEMOP = 256
|
||||||
|
SYS_MSGCTL = 258
|
||||||
|
SYS_MSGGET = 259
|
||||||
|
SYS_MSGSND = 260
|
||||||
|
SYS_MSGRCV = 261
|
||||||
|
SYS_SHMAT = 262
|
||||||
|
SYS_SHMCTL = 263
|
||||||
|
SYS_SHMDT = 264
|
||||||
|
SYS_SHMGET = 265
|
||||||
|
SYS_SHM_OPEN = 266
|
||||||
|
SYS_SHM_UNLINK = 267
|
||||||
|
SYS_SEM_OPEN = 268
|
||||||
|
SYS_SEM_CLOSE = 269
|
||||||
|
SYS_SEM_UNLINK = 270
|
||||||
|
SYS_SEM_WAIT = 271
|
||||||
|
SYS_SEM_TRYWAIT = 272
|
||||||
|
SYS_SEM_POST = 273
|
||||||
|
SYS_SYSCTLBYNAME = 274
|
||||||
|
SYS_OPEN_EXTENDED = 277
|
||||||
|
SYS_UMASK_EXTENDED = 278
|
||||||
|
SYS_STAT_EXTENDED = 279
|
||||||
|
SYS_LSTAT_EXTENDED = 280
|
||||||
|
SYS_FSTAT_EXTENDED = 281
|
||||||
|
SYS_CHMOD_EXTENDED = 282
|
||||||
|
SYS_FCHMOD_EXTENDED = 283
|
||||||
|
SYS_ACCESS_EXTENDED = 284
|
||||||
|
SYS_SETTID = 285
|
||||||
|
SYS_GETTID = 286
|
||||||
|
SYS_SETSGROUPS = 287
|
||||||
|
SYS_GETSGROUPS = 288
|
||||||
|
SYS_SETWGROUPS = 289
|
||||||
|
SYS_GETWGROUPS = 290
|
||||||
|
SYS_MKFIFO_EXTENDED = 291
|
||||||
|
SYS_MKDIR_EXTENDED = 292
|
||||||
|
SYS_IDENTITYSVC = 293
|
||||||
|
SYS_SHARED_REGION_CHECK_NP = 294
|
||||||
|
SYS_VM_PRESSURE_MONITOR = 296
|
||||||
|
SYS_PSYNCH_RW_LONGRDLOCK = 297
|
||||||
|
SYS_PSYNCH_RW_YIELDWRLOCK = 298
|
||||||
|
SYS_PSYNCH_RW_DOWNGRADE = 299
|
||||||
|
SYS_PSYNCH_RW_UPGRADE = 300
|
||||||
|
SYS_PSYNCH_MUTEXWAIT = 301
|
||||||
|
SYS_PSYNCH_MUTEXDROP = 302
|
||||||
|
SYS_PSYNCH_CVBROAD = 303
|
||||||
|
SYS_PSYNCH_CVSIGNAL = 304
|
||||||
|
SYS_PSYNCH_CVWAIT = 305
|
||||||
|
SYS_PSYNCH_RW_RDLOCK = 306
|
||||||
|
SYS_PSYNCH_RW_WRLOCK = 307
|
||||||
|
SYS_PSYNCH_RW_UNLOCK = 308
|
||||||
|
SYS_PSYNCH_RW_UNLOCK2 = 309
|
||||||
|
SYS_GETSID = 310
|
||||||
|
SYS_SETTID_WITH_PID = 311
|
||||||
|
SYS_PSYNCH_CVCLRPREPOST = 312
|
||||||
|
SYS_AIO_FSYNC = 313
|
||||||
|
SYS_AIO_RETURN = 314
|
||||||
|
SYS_AIO_SUSPEND = 315
|
||||||
|
SYS_AIO_CANCEL = 316
|
||||||
|
SYS_AIO_ERROR = 317
|
||||||
|
SYS_AIO_READ = 318
|
||||||
|
SYS_AIO_WRITE = 319
|
||||||
|
SYS_LIO_LISTIO = 320
|
||||||
|
SYS_IOPOLICYSYS = 322
|
||||||
|
SYS_PROCESS_POLICY = 323
|
||||||
|
SYS_MLOCKALL = 324
|
||||||
|
SYS_MUNLOCKALL = 325
|
||||||
|
SYS_ISSETUGID = 327
|
||||||
|
SYS___PTHREAD_KILL = 328
|
||||||
|
SYS___PTHREAD_SIGMASK = 329
|
||||||
|
SYS___SIGWAIT = 330
|
||||||
|
SYS___DISABLE_THREADSIGNAL = 331
|
||||||
|
SYS___PTHREAD_MARKCANCEL = 332
|
||||||
|
SYS___PTHREAD_CANCELED = 333
|
||||||
|
SYS___SEMWAIT_SIGNAL = 334
|
||||||
|
SYS_PROC_INFO = 336
|
||||||
|
SYS_SENDFILE = 337
|
||||||
|
SYS_STAT64 = 338
|
||||||
|
SYS_FSTAT64 = 339
|
||||||
|
SYS_LSTAT64 = 340
|
||||||
|
SYS_STAT64_EXTENDED = 341
|
||||||
|
SYS_LSTAT64_EXTENDED = 342
|
||||||
|
SYS_FSTAT64_EXTENDED = 343
|
||||||
|
SYS_GETDIRENTRIES64 = 344
|
||||||
|
SYS_STATFS64 = 345
|
||||||
|
SYS_FSTATFS64 = 346
|
||||||
|
SYS_GETFSSTAT64 = 347
|
||||||
|
SYS___PTHREAD_CHDIR = 348
|
||||||
|
SYS___PTHREAD_FCHDIR = 349
|
||||||
|
SYS_AUDIT = 350
|
||||||
|
SYS_AUDITON = 351
|
||||||
|
SYS_GETAUID = 353
|
||||||
|
SYS_SETAUID = 354
|
||||||
|
SYS_GETAUDIT_ADDR = 357
|
||||||
|
SYS_SETAUDIT_ADDR = 358
|
||||||
|
SYS_AUDITCTL = 359
|
||||||
|
SYS_BSDTHREAD_CREATE = 360
|
||||||
|
SYS_BSDTHREAD_TERMINATE = 361
|
||||||
|
SYS_KQUEUE = 362
|
||||||
|
SYS_KEVENT = 363
|
||||||
|
SYS_LCHOWN = 364
|
||||||
|
SYS_BSDTHREAD_REGISTER = 366
|
||||||
|
SYS_WORKQ_OPEN = 367
|
||||||
|
SYS_WORKQ_KERNRETURN = 368
|
||||||
|
SYS_KEVENT64 = 369
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL = 370
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
|
||||||
|
SYS_THREAD_SELFID = 372
|
||||||
|
SYS_LEDGER = 373
|
||||||
|
SYS_KEVENT_QOS = 374
|
||||||
|
SYS_KEVENT_ID = 375
|
||||||
|
SYS___MAC_EXECVE = 380
|
||||||
|
SYS___MAC_SYSCALL = 381
|
||||||
|
SYS___MAC_GET_FILE = 382
|
||||||
|
SYS___MAC_SET_FILE = 383
|
||||||
|
SYS___MAC_GET_LINK = 384
|
||||||
|
SYS___MAC_SET_LINK = 385
|
||||||
|
SYS___MAC_GET_PROC = 386
|
||||||
|
SYS___MAC_SET_PROC = 387
|
||||||
|
SYS___MAC_GET_FD = 388
|
||||||
|
SYS___MAC_SET_FD = 389
|
||||||
|
SYS___MAC_GET_PID = 390
|
||||||
|
SYS_PSELECT = 394
|
||||||
|
SYS_PSELECT_NOCANCEL = 395
|
||||||
|
SYS_READ_NOCANCEL = 396
|
||||||
|
SYS_WRITE_NOCANCEL = 397
|
||||||
|
SYS_OPEN_NOCANCEL = 398
|
||||||
|
SYS_CLOSE_NOCANCEL = 399
|
||||||
|
SYS_WAIT4_NOCANCEL = 400
|
||||||
|
SYS_RECVMSG_NOCANCEL = 401
|
||||||
|
SYS_SENDMSG_NOCANCEL = 402
|
||||||
|
SYS_RECVFROM_NOCANCEL = 403
|
||||||
|
SYS_ACCEPT_NOCANCEL = 404
|
||||||
|
SYS_MSYNC_NOCANCEL = 405
|
||||||
|
SYS_FCNTL_NOCANCEL = 406
|
||||||
|
SYS_SELECT_NOCANCEL = 407
|
||||||
|
SYS_FSYNC_NOCANCEL = 408
|
||||||
|
SYS_CONNECT_NOCANCEL = 409
|
||||||
|
SYS_SIGSUSPEND_NOCANCEL = 410
|
||||||
|
SYS_READV_NOCANCEL = 411
|
||||||
|
SYS_WRITEV_NOCANCEL = 412
|
||||||
|
SYS_SENDTO_NOCANCEL = 413
|
||||||
|
SYS_PREAD_NOCANCEL = 414
|
||||||
|
SYS_PWRITE_NOCANCEL = 415
|
||||||
|
SYS_WAITID_NOCANCEL = 416
|
||||||
|
SYS_POLL_NOCANCEL = 417
|
||||||
|
SYS_MSGSND_NOCANCEL = 418
|
||||||
|
SYS_MSGRCV_NOCANCEL = 419
|
||||||
|
SYS_SEM_WAIT_NOCANCEL = 420
|
||||||
|
SYS_AIO_SUSPEND_NOCANCEL = 421
|
||||||
|
SYS___SIGWAIT_NOCANCEL = 422
|
||||||
|
SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
|
||||||
|
SYS___MAC_MOUNT = 424
|
||||||
|
SYS___MAC_GET_MOUNT = 425
|
||||||
|
SYS___MAC_GETFSSTAT = 426
|
||||||
|
SYS_FSGETPATH = 427
|
||||||
|
SYS_AUDIT_SESSION_SELF = 428
|
||||||
|
SYS_AUDIT_SESSION_JOIN = 429
|
||||||
|
SYS_FILEPORT_MAKEPORT = 430
|
||||||
|
SYS_FILEPORT_MAKEFD = 431
|
||||||
|
SYS_AUDIT_SESSION_PORT = 432
|
||||||
|
SYS_PID_SUSPEND = 433
|
||||||
|
SYS_PID_RESUME = 434
|
||||||
|
SYS_PID_HIBERNATE = 435
|
||||||
|
SYS_PID_SHUTDOWN_SOCKETS = 436
|
||||||
|
SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
|
||||||
|
SYS_KAS_INFO = 439
|
||||||
|
SYS_MEMORYSTATUS_CONTROL = 440
|
||||||
|
SYS_GUARDED_OPEN_NP = 441
|
||||||
|
SYS_GUARDED_CLOSE_NP = 442
|
||||||
|
SYS_GUARDED_KQUEUE_NP = 443
|
||||||
|
SYS_CHANGE_FDGUARD_NP = 444
|
||||||
|
SYS_USRCTL = 445
|
||||||
|
SYS_PROC_RLIMIT_CONTROL = 446
|
||||||
|
SYS_CONNECTX = 447
|
||||||
|
SYS_DISCONNECTX = 448
|
||||||
|
SYS_PEELOFF = 449
|
||||||
|
SYS_SOCKET_DELEGATE = 450
|
||||||
|
SYS_TELEMETRY = 451
|
||||||
|
SYS_PROC_UUID_POLICY = 452
|
||||||
|
SYS_MEMORYSTATUS_GET_LEVEL = 453
|
||||||
|
SYS_SYSTEM_OVERRIDE = 454
|
||||||
|
SYS_VFS_PURGE = 455
|
||||||
|
SYS_SFI_CTL = 456
|
||||||
|
SYS_SFI_PIDCTL = 457
|
||||||
|
SYS_COALITION = 458
|
||||||
|
SYS_COALITION_INFO = 459
|
||||||
|
SYS_NECP_MATCH_POLICY = 460
|
||||||
|
SYS_GETATTRLISTBULK = 461
|
||||||
|
SYS_CLONEFILEAT = 462
|
||||||
|
SYS_OPENAT = 463
|
||||||
|
SYS_OPENAT_NOCANCEL = 464
|
||||||
|
SYS_RENAMEAT = 465
|
||||||
|
SYS_FACCESSAT = 466
|
||||||
|
SYS_FCHMODAT = 467
|
||||||
|
SYS_FCHOWNAT = 468
|
||||||
|
SYS_FSTATAT = 469
|
||||||
|
SYS_FSTATAT64 = 470
|
||||||
|
SYS_LINKAT = 471
|
||||||
|
SYS_UNLINKAT = 472
|
||||||
|
SYS_READLINKAT = 473
|
||||||
|
SYS_SYMLINKAT = 474
|
||||||
|
SYS_MKDIRAT = 475
|
||||||
|
SYS_GETATTRLISTAT = 476
|
||||||
|
SYS_PROC_TRACE_LOG = 477
|
||||||
|
SYS_BSDTHREAD_CTL = 478
|
||||||
|
SYS_OPENBYID_NP = 479
|
||||||
|
SYS_RECVMSG_X = 480
|
||||||
|
SYS_SENDMSG_X = 481
|
||||||
|
SYS_THREAD_SELFUSAGE = 482
|
||||||
|
SYS_CSRCTL = 483
|
||||||
|
SYS_GUARDED_OPEN_DPROTECTED_NP = 484
|
||||||
|
SYS_GUARDED_WRITE_NP = 485
|
||||||
|
SYS_GUARDED_PWRITE_NP = 486
|
||||||
|
SYS_GUARDED_WRITEV_NP = 487
|
||||||
|
SYS_RENAMEATX_NP = 488
|
||||||
|
SYS_MREMAP_ENCRYPTED = 489
|
||||||
|
SYS_NETAGENT_TRIGGER = 490
|
||||||
|
SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
|
||||||
|
SYS_MICROSTACKSHOT = 492
|
||||||
|
SYS_GRAB_PGO_DATA = 493
|
||||||
|
SYS_PERSONA = 494
|
||||||
|
SYS_WORK_INTERVAL_CTL = 499
|
||||||
|
SYS_GETENTROPY = 500
|
||||||
|
SYS_NECP_OPEN = 501
|
||||||
|
SYS_NECP_CLIENT_ACTION = 502
|
||||||
|
SYS___NEXUS_OPEN = 503
|
||||||
|
SYS___NEXUS_REGISTER = 504
|
||||||
|
SYS___NEXUS_DEREGISTER = 505
|
||||||
|
SYS___NEXUS_CREATE = 506
|
||||||
|
SYS___NEXUS_DESTROY = 507
|
||||||
|
SYS___NEXUS_GET_OPT = 508
|
||||||
|
SYS___NEXUS_SET_OPT = 509
|
||||||
|
SYS___CHANNEL_OPEN = 510
|
||||||
|
SYS___CHANNEL_GET_INFO = 511
|
||||||
|
SYS___CHANNEL_SYNC = 512
|
||||||
|
SYS___CHANNEL_GET_OPT = 513
|
||||||
|
SYS___CHANNEL_SET_OPT = 514
|
||||||
|
SYS_ULOCK_WAIT = 515
|
||||||
|
SYS_ULOCK_WAKE = 516
|
||||||
|
SYS_FCLONEFILEAT = 517
|
||||||
|
SYS_FS_SNAPSHOT = 518
|
||||||
|
SYS_TERMINATE_WITH_PAYLOAD = 520
|
||||||
|
SYS_ABORT_WITH_PAYLOAD = 521
|
||||||
|
SYS_NECP_SESSION_OPEN = 522
|
||||||
|
SYS_NECP_SESSION_ACTION = 523
|
||||||
|
SYS_SETATTRLISTAT = 524
|
||||||
|
SYS_NET_QOS_GUIDELINE = 525
|
||||||
|
SYS_FMOUNT = 526
|
||||||
|
SYS_NTP_ADJTIME = 527
|
||||||
|
SYS_NTP_GETTIME = 528
|
||||||
|
SYS_OS_FAULT_WITH_PAYLOAD = 529
|
||||||
|
SYS_MAXSYSCALL = 530
|
||||||
|
SYS_INVALID = 63
|
||||||
|
)
|
|
@ -0,0 +1,439 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// +build amd64,darwin
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
// Deprecated: Use libSystem wrappers instead of direct syscalls.
|
||||||
|
const (
|
||||||
|
SYS_SYSCALL = 0
|
||||||
|
SYS_EXIT = 1
|
||||||
|
SYS_FORK = 2
|
||||||
|
SYS_READ = 3
|
||||||
|
SYS_WRITE = 4
|
||||||
|
SYS_OPEN = 5
|
||||||
|
SYS_CLOSE = 6
|
||||||
|
SYS_WAIT4 = 7
|
||||||
|
SYS_LINK = 9
|
||||||
|
SYS_UNLINK = 10
|
||||||
|
SYS_CHDIR = 12
|
||||||
|
SYS_FCHDIR = 13
|
||||||
|
SYS_MKNOD = 14
|
||||||
|
SYS_CHMOD = 15
|
||||||
|
SYS_CHOWN = 16
|
||||||
|
SYS_GETFSSTAT = 18
|
||||||
|
SYS_GETPID = 20
|
||||||
|
SYS_SETUID = 23
|
||||||
|
SYS_GETUID = 24
|
||||||
|
SYS_GETEUID = 25
|
||||||
|
SYS_PTRACE = 26
|
||||||
|
SYS_RECVMSG = 27
|
||||||
|
SYS_SENDMSG = 28
|
||||||
|
SYS_RECVFROM = 29
|
||||||
|
SYS_ACCEPT = 30
|
||||||
|
SYS_GETPEERNAME = 31
|
||||||
|
SYS_GETSOCKNAME = 32
|
||||||
|
SYS_ACCESS = 33
|
||||||
|
SYS_CHFLAGS = 34
|
||||||
|
SYS_FCHFLAGS = 35
|
||||||
|
SYS_SYNC = 36
|
||||||
|
SYS_KILL = 37
|
||||||
|
SYS_GETPPID = 39
|
||||||
|
SYS_DUP = 41
|
||||||
|
SYS_PIPE = 42
|
||||||
|
SYS_GETEGID = 43
|
||||||
|
SYS_SIGACTION = 46
|
||||||
|
SYS_GETGID = 47
|
||||||
|
SYS_SIGPROCMASK = 48
|
||||||
|
SYS_GETLOGIN = 49
|
||||||
|
SYS_SETLOGIN = 50
|
||||||
|
SYS_ACCT = 51
|
||||||
|
SYS_SIGPENDING = 52
|
||||||
|
SYS_SIGALTSTACK = 53
|
||||||
|
SYS_IOCTL = 54
|
||||||
|
SYS_REBOOT = 55
|
||||||
|
SYS_REVOKE = 56
|
||||||
|
SYS_SYMLINK = 57
|
||||||
|
SYS_READLINK = 58
|
||||||
|
SYS_EXECVE = 59
|
||||||
|
SYS_UMASK = 60
|
||||||
|
SYS_CHROOT = 61
|
||||||
|
SYS_MSYNC = 65
|
||||||
|
SYS_VFORK = 66
|
||||||
|
SYS_MUNMAP = 73
|
||||||
|
SYS_MPROTECT = 74
|
||||||
|
SYS_MADVISE = 75
|
||||||
|
SYS_MINCORE = 78
|
||||||
|
SYS_GETGROUPS = 79
|
||||||
|
SYS_SETGROUPS = 80
|
||||||
|
SYS_GETPGRP = 81
|
||||||
|
SYS_SETPGID = 82
|
||||||
|
SYS_SETITIMER = 83
|
||||||
|
SYS_SWAPON = 85
|
||||||
|
SYS_GETITIMER = 86
|
||||||
|
SYS_GETDTABLESIZE = 89
|
||||||
|
SYS_DUP2 = 90
|
||||||
|
SYS_FCNTL = 92
|
||||||
|
SYS_SELECT = 93
|
||||||
|
SYS_FSYNC = 95
|
||||||
|
SYS_SETPRIORITY = 96
|
||||||
|
SYS_SOCKET = 97
|
||||||
|
SYS_CONNECT = 98
|
||||||
|
SYS_GETPRIORITY = 100
|
||||||
|
SYS_BIND = 104
|
||||||
|
SYS_SETSOCKOPT = 105
|
||||||
|
SYS_LISTEN = 106
|
||||||
|
SYS_SIGSUSPEND = 111
|
||||||
|
SYS_GETTIMEOFDAY = 116
|
||||||
|
SYS_GETRUSAGE = 117
|
||||||
|
SYS_GETSOCKOPT = 118
|
||||||
|
SYS_READV = 120
|
||||||
|
SYS_WRITEV = 121
|
||||||
|
SYS_SETTIMEOFDAY = 122
|
||||||
|
SYS_FCHOWN = 123
|
||||||
|
SYS_FCHMOD = 124
|
||||||
|
SYS_SETREUID = 126
|
||||||
|
SYS_SETREGID = 127
|
||||||
|
SYS_RENAME = 128
|
||||||
|
SYS_FLOCK = 131
|
||||||
|
SYS_MKFIFO = 132
|
||||||
|
SYS_SENDTO = 133
|
||||||
|
SYS_SHUTDOWN = 134
|
||||||
|
SYS_SOCKETPAIR = 135
|
||||||
|
SYS_MKDIR = 136
|
||||||
|
SYS_RMDIR = 137
|
||||||
|
SYS_UTIMES = 138
|
||||||
|
SYS_FUTIMES = 139
|
||||||
|
SYS_ADJTIME = 140
|
||||||
|
SYS_GETHOSTUUID = 142
|
||||||
|
SYS_SETSID = 147
|
||||||
|
SYS_GETPGID = 151
|
||||||
|
SYS_SETPRIVEXEC = 152
|
||||||
|
SYS_PREAD = 153
|
||||||
|
SYS_PWRITE = 154
|
||||||
|
SYS_NFSSVC = 155
|
||||||
|
SYS_STATFS = 157
|
||||||
|
SYS_FSTATFS = 158
|
||||||
|
SYS_UNMOUNT = 159
|
||||||
|
SYS_GETFH = 161
|
||||||
|
SYS_QUOTACTL = 165
|
||||||
|
SYS_MOUNT = 167
|
||||||
|
SYS_CSOPS = 169
|
||||||
|
SYS_CSOPS_AUDITTOKEN = 170
|
||||||
|
SYS_WAITID = 173
|
||||||
|
SYS_KDEBUG_TYPEFILTER = 177
|
||||||
|
SYS_KDEBUG_TRACE_STRING = 178
|
||||||
|
SYS_KDEBUG_TRACE64 = 179
|
||||||
|
SYS_KDEBUG_TRACE = 180
|
||||||
|
SYS_SETGID = 181
|
||||||
|
SYS_SETEGID = 182
|
||||||
|
SYS_SETEUID = 183
|
||||||
|
SYS_SIGRETURN = 184
|
||||||
|
SYS_THREAD_SELFCOUNTS = 186
|
||||||
|
SYS_FDATASYNC = 187
|
||||||
|
SYS_STAT = 188
|
||||||
|
SYS_FSTAT = 189
|
||||||
|
SYS_LSTAT = 190
|
||||||
|
SYS_PATHCONF = 191
|
||||||
|
SYS_FPATHCONF = 192
|
||||||
|
SYS_GETRLIMIT = 194
|
||||||
|
SYS_SETRLIMIT = 195
|
||||||
|
SYS_GETDIRENTRIES = 196
|
||||||
|
SYS_MMAP = 197
|
||||||
|
SYS_LSEEK = 199
|
||||||
|
SYS_TRUNCATE = 200
|
||||||
|
SYS_FTRUNCATE = 201
|
||||||
|
SYS_SYSCTL = 202
|
||||||
|
SYS_MLOCK = 203
|
||||||
|
SYS_MUNLOCK = 204
|
||||||
|
SYS_UNDELETE = 205
|
||||||
|
SYS_OPEN_DPROTECTED_NP = 216
|
||||||
|
SYS_GETATTRLIST = 220
|
||||||
|
SYS_SETATTRLIST = 221
|
||||||
|
SYS_GETDIRENTRIESATTR = 222
|
||||||
|
SYS_EXCHANGEDATA = 223
|
||||||
|
SYS_SEARCHFS = 225
|
||||||
|
SYS_DELETE = 226
|
||||||
|
SYS_COPYFILE = 227
|
||||||
|
SYS_FGETATTRLIST = 228
|
||||||
|
SYS_FSETATTRLIST = 229
|
||||||
|
SYS_POLL = 230
|
||||||
|
SYS_WATCHEVENT = 231
|
||||||
|
SYS_WAITEVENT = 232
|
||||||
|
SYS_MODWATCH = 233
|
||||||
|
SYS_GETXATTR = 234
|
||||||
|
SYS_FGETXATTR = 235
|
||||||
|
SYS_SETXATTR = 236
|
||||||
|
SYS_FSETXATTR = 237
|
||||||
|
SYS_REMOVEXATTR = 238
|
||||||
|
SYS_FREMOVEXATTR = 239
|
||||||
|
SYS_LISTXATTR = 240
|
||||||
|
SYS_FLISTXATTR = 241
|
||||||
|
SYS_FSCTL = 242
|
||||||
|
SYS_INITGROUPS = 243
|
||||||
|
SYS_POSIX_SPAWN = 244
|
||||||
|
SYS_FFSCTL = 245
|
||||||
|
SYS_NFSCLNT = 247
|
||||||
|
SYS_FHOPEN = 248
|
||||||
|
SYS_MINHERIT = 250
|
||||||
|
SYS_SEMSYS = 251
|
||||||
|
SYS_MSGSYS = 252
|
||||||
|
SYS_SHMSYS = 253
|
||||||
|
SYS_SEMCTL = 254
|
||||||
|
SYS_SEMGET = 255
|
||||||
|
SYS_SEMOP = 256
|
||||||
|
SYS_MSGCTL = 258
|
||||||
|
SYS_MSGGET = 259
|
||||||
|
SYS_MSGSND = 260
|
||||||
|
SYS_MSGRCV = 261
|
||||||
|
SYS_SHMAT = 262
|
||||||
|
SYS_SHMCTL = 263
|
||||||
|
SYS_SHMDT = 264
|
||||||
|
SYS_SHMGET = 265
|
||||||
|
SYS_SHM_OPEN = 266
|
||||||
|
SYS_SHM_UNLINK = 267
|
||||||
|
SYS_SEM_OPEN = 268
|
||||||
|
SYS_SEM_CLOSE = 269
|
||||||
|
SYS_SEM_UNLINK = 270
|
||||||
|
SYS_SEM_WAIT = 271
|
||||||
|
SYS_SEM_TRYWAIT = 272
|
||||||
|
SYS_SEM_POST = 273
|
||||||
|
SYS_SYSCTLBYNAME = 274
|
||||||
|
SYS_OPEN_EXTENDED = 277
|
||||||
|
SYS_UMASK_EXTENDED = 278
|
||||||
|
SYS_STAT_EXTENDED = 279
|
||||||
|
SYS_LSTAT_EXTENDED = 280
|
||||||
|
SYS_FSTAT_EXTENDED = 281
|
||||||
|
SYS_CHMOD_EXTENDED = 282
|
||||||
|
SYS_FCHMOD_EXTENDED = 283
|
||||||
|
SYS_ACCESS_EXTENDED = 284
|
||||||
|
SYS_SETTID = 285
|
||||||
|
SYS_GETTID = 286
|
||||||
|
SYS_SETSGROUPS = 287
|
||||||
|
SYS_GETSGROUPS = 288
|
||||||
|
SYS_SETWGROUPS = 289
|
||||||
|
SYS_GETWGROUPS = 290
|
||||||
|
SYS_MKFIFO_EXTENDED = 291
|
||||||
|
SYS_MKDIR_EXTENDED = 292
|
||||||
|
SYS_IDENTITYSVC = 293
|
||||||
|
SYS_SHARED_REGION_CHECK_NP = 294
|
||||||
|
SYS_VM_PRESSURE_MONITOR = 296
|
||||||
|
SYS_PSYNCH_RW_LONGRDLOCK = 297
|
||||||
|
SYS_PSYNCH_RW_YIELDWRLOCK = 298
|
||||||
|
SYS_PSYNCH_RW_DOWNGRADE = 299
|
||||||
|
SYS_PSYNCH_RW_UPGRADE = 300
|
||||||
|
SYS_PSYNCH_MUTEXWAIT = 301
|
||||||
|
SYS_PSYNCH_MUTEXDROP = 302
|
||||||
|
SYS_PSYNCH_CVBROAD = 303
|
||||||
|
SYS_PSYNCH_CVSIGNAL = 304
|
||||||
|
SYS_PSYNCH_CVWAIT = 305
|
||||||
|
SYS_PSYNCH_RW_RDLOCK = 306
|
||||||
|
SYS_PSYNCH_RW_WRLOCK = 307
|
||||||
|
SYS_PSYNCH_RW_UNLOCK = 308
|
||||||
|
SYS_PSYNCH_RW_UNLOCK2 = 309
|
||||||
|
SYS_GETSID = 310
|
||||||
|
SYS_SETTID_WITH_PID = 311
|
||||||
|
SYS_PSYNCH_CVCLRPREPOST = 312
|
||||||
|
SYS_AIO_FSYNC = 313
|
||||||
|
SYS_AIO_RETURN = 314
|
||||||
|
SYS_AIO_SUSPEND = 315
|
||||||
|
SYS_AIO_CANCEL = 316
|
||||||
|
SYS_AIO_ERROR = 317
|
||||||
|
SYS_AIO_READ = 318
|
||||||
|
SYS_AIO_WRITE = 319
|
||||||
|
SYS_LIO_LISTIO = 320
|
||||||
|
SYS_IOPOLICYSYS = 322
|
||||||
|
SYS_PROCESS_POLICY = 323
|
||||||
|
SYS_MLOCKALL = 324
|
||||||
|
SYS_MUNLOCKALL = 325
|
||||||
|
SYS_ISSETUGID = 327
|
||||||
|
SYS___PTHREAD_KILL = 328
|
||||||
|
SYS___PTHREAD_SIGMASK = 329
|
||||||
|
SYS___SIGWAIT = 330
|
||||||
|
SYS___DISABLE_THREADSIGNAL = 331
|
||||||
|
SYS___PTHREAD_MARKCANCEL = 332
|
||||||
|
SYS___PTHREAD_CANCELED = 333
|
||||||
|
SYS___SEMWAIT_SIGNAL = 334
|
||||||
|
SYS_PROC_INFO = 336
|
||||||
|
SYS_SENDFILE = 337
|
||||||
|
SYS_STAT64 = 338
|
||||||
|
SYS_FSTAT64 = 339
|
||||||
|
SYS_LSTAT64 = 340
|
||||||
|
SYS_STAT64_EXTENDED = 341
|
||||||
|
SYS_LSTAT64_EXTENDED = 342
|
||||||
|
SYS_FSTAT64_EXTENDED = 343
|
||||||
|
SYS_GETDIRENTRIES64 = 344
|
||||||
|
SYS_STATFS64 = 345
|
||||||
|
SYS_FSTATFS64 = 346
|
||||||
|
SYS_GETFSSTAT64 = 347
|
||||||
|
SYS___PTHREAD_CHDIR = 348
|
||||||
|
SYS___PTHREAD_FCHDIR = 349
|
||||||
|
SYS_AUDIT = 350
|
||||||
|
SYS_AUDITON = 351
|
||||||
|
SYS_GETAUID = 353
|
||||||
|
SYS_SETAUID = 354
|
||||||
|
SYS_GETAUDIT_ADDR = 357
|
||||||
|
SYS_SETAUDIT_ADDR = 358
|
||||||
|
SYS_AUDITCTL = 359
|
||||||
|
SYS_BSDTHREAD_CREATE = 360
|
||||||
|
SYS_BSDTHREAD_TERMINATE = 361
|
||||||
|
SYS_KQUEUE = 362
|
||||||
|
SYS_KEVENT = 363
|
||||||
|
SYS_LCHOWN = 364
|
||||||
|
SYS_BSDTHREAD_REGISTER = 366
|
||||||
|
SYS_WORKQ_OPEN = 367
|
||||||
|
SYS_WORKQ_KERNRETURN = 368
|
||||||
|
SYS_KEVENT64 = 369
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL = 370
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
|
||||||
|
SYS_THREAD_SELFID = 372
|
||||||
|
SYS_LEDGER = 373
|
||||||
|
SYS_KEVENT_QOS = 374
|
||||||
|
SYS_KEVENT_ID = 375
|
||||||
|
SYS___MAC_EXECVE = 380
|
||||||
|
SYS___MAC_SYSCALL = 381
|
||||||
|
SYS___MAC_GET_FILE = 382
|
||||||
|
SYS___MAC_SET_FILE = 383
|
||||||
|
SYS___MAC_GET_LINK = 384
|
||||||
|
SYS___MAC_SET_LINK = 385
|
||||||
|
SYS___MAC_GET_PROC = 386
|
||||||
|
SYS___MAC_SET_PROC = 387
|
||||||
|
SYS___MAC_GET_FD = 388
|
||||||
|
SYS___MAC_SET_FD = 389
|
||||||
|
SYS___MAC_GET_PID = 390
|
||||||
|
SYS_PSELECT = 394
|
||||||
|
SYS_PSELECT_NOCANCEL = 395
|
||||||
|
SYS_READ_NOCANCEL = 396
|
||||||
|
SYS_WRITE_NOCANCEL = 397
|
||||||
|
SYS_OPEN_NOCANCEL = 398
|
||||||
|
SYS_CLOSE_NOCANCEL = 399
|
||||||
|
SYS_WAIT4_NOCANCEL = 400
|
||||||
|
SYS_RECVMSG_NOCANCEL = 401
|
||||||
|
SYS_SENDMSG_NOCANCEL = 402
|
||||||
|
SYS_RECVFROM_NOCANCEL = 403
|
||||||
|
SYS_ACCEPT_NOCANCEL = 404
|
||||||
|
SYS_MSYNC_NOCANCEL = 405
|
||||||
|
SYS_FCNTL_NOCANCEL = 406
|
||||||
|
SYS_SELECT_NOCANCEL = 407
|
||||||
|
SYS_FSYNC_NOCANCEL = 408
|
||||||
|
SYS_CONNECT_NOCANCEL = 409
|
||||||
|
SYS_SIGSUSPEND_NOCANCEL = 410
|
||||||
|
SYS_READV_NOCANCEL = 411
|
||||||
|
SYS_WRITEV_NOCANCEL = 412
|
||||||
|
SYS_SENDTO_NOCANCEL = 413
|
||||||
|
SYS_PREAD_NOCANCEL = 414
|
||||||
|
SYS_PWRITE_NOCANCEL = 415
|
||||||
|
SYS_WAITID_NOCANCEL = 416
|
||||||
|
SYS_POLL_NOCANCEL = 417
|
||||||
|
SYS_MSGSND_NOCANCEL = 418
|
||||||
|
SYS_MSGRCV_NOCANCEL = 419
|
||||||
|
SYS_SEM_WAIT_NOCANCEL = 420
|
||||||
|
SYS_AIO_SUSPEND_NOCANCEL = 421
|
||||||
|
SYS___SIGWAIT_NOCANCEL = 422
|
||||||
|
SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
|
||||||
|
SYS___MAC_MOUNT = 424
|
||||||
|
SYS___MAC_GET_MOUNT = 425
|
||||||
|
SYS___MAC_GETFSSTAT = 426
|
||||||
|
SYS_FSGETPATH = 427
|
||||||
|
SYS_AUDIT_SESSION_SELF = 428
|
||||||
|
SYS_AUDIT_SESSION_JOIN = 429
|
||||||
|
SYS_FILEPORT_MAKEPORT = 430
|
||||||
|
SYS_FILEPORT_MAKEFD = 431
|
||||||
|
SYS_AUDIT_SESSION_PORT = 432
|
||||||
|
SYS_PID_SUSPEND = 433
|
||||||
|
SYS_PID_RESUME = 434
|
||||||
|
SYS_PID_HIBERNATE = 435
|
||||||
|
SYS_PID_SHUTDOWN_SOCKETS = 436
|
||||||
|
SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
|
||||||
|
SYS_KAS_INFO = 439
|
||||||
|
SYS_MEMORYSTATUS_CONTROL = 440
|
||||||
|
SYS_GUARDED_OPEN_NP = 441
|
||||||
|
SYS_GUARDED_CLOSE_NP = 442
|
||||||
|
SYS_GUARDED_KQUEUE_NP = 443
|
||||||
|
SYS_CHANGE_FDGUARD_NP = 444
|
||||||
|
SYS_USRCTL = 445
|
||||||
|
SYS_PROC_RLIMIT_CONTROL = 446
|
||||||
|
SYS_CONNECTX = 447
|
||||||
|
SYS_DISCONNECTX = 448
|
||||||
|
SYS_PEELOFF = 449
|
||||||
|
SYS_SOCKET_DELEGATE = 450
|
||||||
|
SYS_TELEMETRY = 451
|
||||||
|
SYS_PROC_UUID_POLICY = 452
|
||||||
|
SYS_MEMORYSTATUS_GET_LEVEL = 453
|
||||||
|
SYS_SYSTEM_OVERRIDE = 454
|
||||||
|
SYS_VFS_PURGE = 455
|
||||||
|
SYS_SFI_CTL = 456
|
||||||
|
SYS_SFI_PIDCTL = 457
|
||||||
|
SYS_COALITION = 458
|
||||||
|
SYS_COALITION_INFO = 459
|
||||||
|
SYS_NECP_MATCH_POLICY = 460
|
||||||
|
SYS_GETATTRLISTBULK = 461
|
||||||
|
SYS_CLONEFILEAT = 462
|
||||||
|
SYS_OPENAT = 463
|
||||||
|
SYS_OPENAT_NOCANCEL = 464
|
||||||
|
SYS_RENAMEAT = 465
|
||||||
|
SYS_FACCESSAT = 466
|
||||||
|
SYS_FCHMODAT = 467
|
||||||
|
SYS_FCHOWNAT = 468
|
||||||
|
SYS_FSTATAT = 469
|
||||||
|
SYS_FSTATAT64 = 470
|
||||||
|
SYS_LINKAT = 471
|
||||||
|
SYS_UNLINKAT = 472
|
||||||
|
SYS_READLINKAT = 473
|
||||||
|
SYS_SYMLINKAT = 474
|
||||||
|
SYS_MKDIRAT = 475
|
||||||
|
SYS_GETATTRLISTAT = 476
|
||||||
|
SYS_PROC_TRACE_LOG = 477
|
||||||
|
SYS_BSDTHREAD_CTL = 478
|
||||||
|
SYS_OPENBYID_NP = 479
|
||||||
|
SYS_RECVMSG_X = 480
|
||||||
|
SYS_SENDMSG_X = 481
|
||||||
|
SYS_THREAD_SELFUSAGE = 482
|
||||||
|
SYS_CSRCTL = 483
|
||||||
|
SYS_GUARDED_OPEN_DPROTECTED_NP = 484
|
||||||
|
SYS_GUARDED_WRITE_NP = 485
|
||||||
|
SYS_GUARDED_PWRITE_NP = 486
|
||||||
|
SYS_GUARDED_WRITEV_NP = 487
|
||||||
|
SYS_RENAMEATX_NP = 488
|
||||||
|
SYS_MREMAP_ENCRYPTED = 489
|
||||||
|
SYS_NETAGENT_TRIGGER = 490
|
||||||
|
SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
|
||||||
|
SYS_MICROSTACKSHOT = 492
|
||||||
|
SYS_GRAB_PGO_DATA = 493
|
||||||
|
SYS_PERSONA = 494
|
||||||
|
SYS_WORK_INTERVAL_CTL = 499
|
||||||
|
SYS_GETENTROPY = 500
|
||||||
|
SYS_NECP_OPEN = 501
|
||||||
|
SYS_NECP_CLIENT_ACTION = 502
|
||||||
|
SYS___NEXUS_OPEN = 503
|
||||||
|
SYS___NEXUS_REGISTER = 504
|
||||||
|
SYS___NEXUS_DEREGISTER = 505
|
||||||
|
SYS___NEXUS_CREATE = 506
|
||||||
|
SYS___NEXUS_DESTROY = 507
|
||||||
|
SYS___NEXUS_GET_OPT = 508
|
||||||
|
SYS___NEXUS_SET_OPT = 509
|
||||||
|
SYS___CHANNEL_OPEN = 510
|
||||||
|
SYS___CHANNEL_GET_INFO = 511
|
||||||
|
SYS___CHANNEL_SYNC = 512
|
||||||
|
SYS___CHANNEL_GET_OPT = 513
|
||||||
|
SYS___CHANNEL_SET_OPT = 514
|
||||||
|
SYS_ULOCK_WAIT = 515
|
||||||
|
SYS_ULOCK_WAKE = 516
|
||||||
|
SYS_FCLONEFILEAT = 517
|
||||||
|
SYS_FS_SNAPSHOT = 518
|
||||||
|
SYS_TERMINATE_WITH_PAYLOAD = 520
|
||||||
|
SYS_ABORT_WITH_PAYLOAD = 521
|
||||||
|
SYS_NECP_SESSION_OPEN = 522
|
||||||
|
SYS_NECP_SESSION_ACTION = 523
|
||||||
|
SYS_SETATTRLISTAT = 524
|
||||||
|
SYS_NET_QOS_GUIDELINE = 525
|
||||||
|
SYS_FMOUNT = 526
|
||||||
|
SYS_NTP_ADJTIME = 527
|
||||||
|
SYS_NTP_GETTIME = 528
|
||||||
|
SYS_OS_FAULT_WITH_PAYLOAD = 529
|
||||||
|
SYS_KQUEUE_WORKLOOP_CTL = 530
|
||||||
|
SYS___MACH_BRIDGE_REMOTE_TIME = 531
|
||||||
|
SYS_MAXSYSCALL = 532
|
||||||
|
SYS_INVALID = 63
|
||||||
|
)
|
|
@ -0,0 +1,437 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// +build arm,darwin
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
// Deprecated: Use libSystem wrappers instead of direct syscalls.
|
||||||
|
const (
|
||||||
|
SYS_SYSCALL = 0
|
||||||
|
SYS_EXIT = 1
|
||||||
|
SYS_FORK = 2
|
||||||
|
SYS_READ = 3
|
||||||
|
SYS_WRITE = 4
|
||||||
|
SYS_OPEN = 5
|
||||||
|
SYS_CLOSE = 6
|
||||||
|
SYS_WAIT4 = 7
|
||||||
|
SYS_LINK = 9
|
||||||
|
SYS_UNLINK = 10
|
||||||
|
SYS_CHDIR = 12
|
||||||
|
SYS_FCHDIR = 13
|
||||||
|
SYS_MKNOD = 14
|
||||||
|
SYS_CHMOD = 15
|
||||||
|
SYS_CHOWN = 16
|
||||||
|
SYS_GETFSSTAT = 18
|
||||||
|
SYS_GETPID = 20
|
||||||
|
SYS_SETUID = 23
|
||||||
|
SYS_GETUID = 24
|
||||||
|
SYS_GETEUID = 25
|
||||||
|
SYS_PTRACE = 26
|
||||||
|
SYS_RECVMSG = 27
|
||||||
|
SYS_SENDMSG = 28
|
||||||
|
SYS_RECVFROM = 29
|
||||||
|
SYS_ACCEPT = 30
|
||||||
|
SYS_GETPEERNAME = 31
|
||||||
|
SYS_GETSOCKNAME = 32
|
||||||
|
SYS_ACCESS = 33
|
||||||
|
SYS_CHFLAGS = 34
|
||||||
|
SYS_FCHFLAGS = 35
|
||||||
|
SYS_SYNC = 36
|
||||||
|
SYS_KILL = 37
|
||||||
|
SYS_GETPPID = 39
|
||||||
|
SYS_DUP = 41
|
||||||
|
SYS_PIPE = 42
|
||||||
|
SYS_GETEGID = 43
|
||||||
|
SYS_SIGACTION = 46
|
||||||
|
SYS_GETGID = 47
|
||||||
|
SYS_SIGPROCMASK = 48
|
||||||
|
SYS_GETLOGIN = 49
|
||||||
|
SYS_SETLOGIN = 50
|
||||||
|
SYS_ACCT = 51
|
||||||
|
SYS_SIGPENDING = 52
|
||||||
|
SYS_SIGALTSTACK = 53
|
||||||
|
SYS_IOCTL = 54
|
||||||
|
SYS_REBOOT = 55
|
||||||
|
SYS_REVOKE = 56
|
||||||
|
SYS_SYMLINK = 57
|
||||||
|
SYS_READLINK = 58
|
||||||
|
SYS_EXECVE = 59
|
||||||
|
SYS_UMASK = 60
|
||||||
|
SYS_CHROOT = 61
|
||||||
|
SYS_MSYNC = 65
|
||||||
|
SYS_VFORK = 66
|
||||||
|
SYS_MUNMAP = 73
|
||||||
|
SYS_MPROTECT = 74
|
||||||
|
SYS_MADVISE = 75
|
||||||
|
SYS_MINCORE = 78
|
||||||
|
SYS_GETGROUPS = 79
|
||||||
|
SYS_SETGROUPS = 80
|
||||||
|
SYS_GETPGRP = 81
|
||||||
|
SYS_SETPGID = 82
|
||||||
|
SYS_SETITIMER = 83
|
||||||
|
SYS_SWAPON = 85
|
||||||
|
SYS_GETITIMER = 86
|
||||||
|
SYS_GETDTABLESIZE = 89
|
||||||
|
SYS_DUP2 = 90
|
||||||
|
SYS_FCNTL = 92
|
||||||
|
SYS_SELECT = 93
|
||||||
|
SYS_FSYNC = 95
|
||||||
|
SYS_SETPRIORITY = 96
|
||||||
|
SYS_SOCKET = 97
|
||||||
|
SYS_CONNECT = 98
|
||||||
|
SYS_GETPRIORITY = 100
|
||||||
|
SYS_BIND = 104
|
||||||
|
SYS_SETSOCKOPT = 105
|
||||||
|
SYS_LISTEN = 106
|
||||||
|
SYS_SIGSUSPEND = 111
|
||||||
|
SYS_GETTIMEOFDAY = 116
|
||||||
|
SYS_GETRUSAGE = 117
|
||||||
|
SYS_GETSOCKOPT = 118
|
||||||
|
SYS_READV = 120
|
||||||
|
SYS_WRITEV = 121
|
||||||
|
SYS_SETTIMEOFDAY = 122
|
||||||
|
SYS_FCHOWN = 123
|
||||||
|
SYS_FCHMOD = 124
|
||||||
|
SYS_SETREUID = 126
|
||||||
|
SYS_SETREGID = 127
|
||||||
|
SYS_RENAME = 128
|
||||||
|
SYS_FLOCK = 131
|
||||||
|
SYS_MKFIFO = 132
|
||||||
|
SYS_SENDTO = 133
|
||||||
|
SYS_SHUTDOWN = 134
|
||||||
|
SYS_SOCKETPAIR = 135
|
||||||
|
SYS_MKDIR = 136
|
||||||
|
SYS_RMDIR = 137
|
||||||
|
SYS_UTIMES = 138
|
||||||
|
SYS_FUTIMES = 139
|
||||||
|
SYS_ADJTIME = 140
|
||||||
|
SYS_GETHOSTUUID = 142
|
||||||
|
SYS_SETSID = 147
|
||||||
|
SYS_GETPGID = 151
|
||||||
|
SYS_SETPRIVEXEC = 152
|
||||||
|
SYS_PREAD = 153
|
||||||
|
SYS_PWRITE = 154
|
||||||
|
SYS_NFSSVC = 155
|
||||||
|
SYS_STATFS = 157
|
||||||
|
SYS_FSTATFS = 158
|
||||||
|
SYS_UNMOUNT = 159
|
||||||
|
SYS_GETFH = 161
|
||||||
|
SYS_QUOTACTL = 165
|
||||||
|
SYS_MOUNT = 167
|
||||||
|
SYS_CSOPS = 169
|
||||||
|
SYS_CSOPS_AUDITTOKEN = 170
|
||||||
|
SYS_WAITID = 173
|
||||||
|
SYS_KDEBUG_TYPEFILTER = 177
|
||||||
|
SYS_KDEBUG_TRACE_STRING = 178
|
||||||
|
SYS_KDEBUG_TRACE64 = 179
|
||||||
|
SYS_KDEBUG_TRACE = 180
|
||||||
|
SYS_SETGID = 181
|
||||||
|
SYS_SETEGID = 182
|
||||||
|
SYS_SETEUID = 183
|
||||||
|
SYS_SIGRETURN = 184
|
||||||
|
SYS_THREAD_SELFCOUNTS = 186
|
||||||
|
SYS_FDATASYNC = 187
|
||||||
|
SYS_STAT = 188
|
||||||
|
SYS_FSTAT = 189
|
||||||
|
SYS_LSTAT = 190
|
||||||
|
SYS_PATHCONF = 191
|
||||||
|
SYS_FPATHCONF = 192
|
||||||
|
SYS_GETRLIMIT = 194
|
||||||
|
SYS_SETRLIMIT = 195
|
||||||
|
SYS_GETDIRENTRIES = 196
|
||||||
|
SYS_MMAP = 197
|
||||||
|
SYS_LSEEK = 199
|
||||||
|
SYS_TRUNCATE = 200
|
||||||
|
SYS_FTRUNCATE = 201
|
||||||
|
SYS_SYSCTL = 202
|
||||||
|
SYS_MLOCK = 203
|
||||||
|
SYS_MUNLOCK = 204
|
||||||
|
SYS_UNDELETE = 205
|
||||||
|
SYS_OPEN_DPROTECTED_NP = 216
|
||||||
|
SYS_GETATTRLIST = 220
|
||||||
|
SYS_SETATTRLIST = 221
|
||||||
|
SYS_GETDIRENTRIESATTR = 222
|
||||||
|
SYS_EXCHANGEDATA = 223
|
||||||
|
SYS_SEARCHFS = 225
|
||||||
|
SYS_DELETE = 226
|
||||||
|
SYS_COPYFILE = 227
|
||||||
|
SYS_FGETATTRLIST = 228
|
||||||
|
SYS_FSETATTRLIST = 229
|
||||||
|
SYS_POLL = 230
|
||||||
|
SYS_WATCHEVENT = 231
|
||||||
|
SYS_WAITEVENT = 232
|
||||||
|
SYS_MODWATCH = 233
|
||||||
|
SYS_GETXATTR = 234
|
||||||
|
SYS_FGETXATTR = 235
|
||||||
|
SYS_SETXATTR = 236
|
||||||
|
SYS_FSETXATTR = 237
|
||||||
|
SYS_REMOVEXATTR = 238
|
||||||
|
SYS_FREMOVEXATTR = 239
|
||||||
|
SYS_LISTXATTR = 240
|
||||||
|
SYS_FLISTXATTR = 241
|
||||||
|
SYS_FSCTL = 242
|
||||||
|
SYS_INITGROUPS = 243
|
||||||
|
SYS_POSIX_SPAWN = 244
|
||||||
|
SYS_FFSCTL = 245
|
||||||
|
SYS_NFSCLNT = 247
|
||||||
|
SYS_FHOPEN = 248
|
||||||
|
SYS_MINHERIT = 250
|
||||||
|
SYS_SEMSYS = 251
|
||||||
|
SYS_MSGSYS = 252
|
||||||
|
SYS_SHMSYS = 253
|
||||||
|
SYS_SEMCTL = 254
|
||||||
|
SYS_SEMGET = 255
|
||||||
|
SYS_SEMOP = 256
|
||||||
|
SYS_MSGCTL = 258
|
||||||
|
SYS_MSGGET = 259
|
||||||
|
SYS_MSGSND = 260
|
||||||
|
SYS_MSGRCV = 261
|
||||||
|
SYS_SHMAT = 262
|
||||||
|
SYS_SHMCTL = 263
|
||||||
|
SYS_SHMDT = 264
|
||||||
|
SYS_SHMGET = 265
|
||||||
|
SYS_SHM_OPEN = 266
|
||||||
|
SYS_SHM_UNLINK = 267
|
||||||
|
SYS_SEM_OPEN = 268
|
||||||
|
SYS_SEM_CLOSE = 269
|
||||||
|
SYS_SEM_UNLINK = 270
|
||||||
|
SYS_SEM_WAIT = 271
|
||||||
|
SYS_SEM_TRYWAIT = 272
|
||||||
|
SYS_SEM_POST = 273
|
||||||
|
SYS_SYSCTLBYNAME = 274
|
||||||
|
SYS_OPEN_EXTENDED = 277
|
||||||
|
SYS_UMASK_EXTENDED = 278
|
||||||
|
SYS_STAT_EXTENDED = 279
|
||||||
|
SYS_LSTAT_EXTENDED = 280
|
||||||
|
SYS_FSTAT_EXTENDED = 281
|
||||||
|
SYS_CHMOD_EXTENDED = 282
|
||||||
|
SYS_FCHMOD_EXTENDED = 283
|
||||||
|
SYS_ACCESS_EXTENDED = 284
|
||||||
|
SYS_SETTID = 285
|
||||||
|
SYS_GETTID = 286
|
||||||
|
SYS_SETSGROUPS = 287
|
||||||
|
SYS_GETSGROUPS = 288
|
||||||
|
SYS_SETWGROUPS = 289
|
||||||
|
SYS_GETWGROUPS = 290
|
||||||
|
SYS_MKFIFO_EXTENDED = 291
|
||||||
|
SYS_MKDIR_EXTENDED = 292
|
||||||
|
SYS_IDENTITYSVC = 293
|
||||||
|
SYS_SHARED_REGION_CHECK_NP = 294
|
||||||
|
SYS_VM_PRESSURE_MONITOR = 296
|
||||||
|
SYS_PSYNCH_RW_LONGRDLOCK = 297
|
||||||
|
SYS_PSYNCH_RW_YIELDWRLOCK = 298
|
||||||
|
SYS_PSYNCH_RW_DOWNGRADE = 299
|
||||||
|
SYS_PSYNCH_RW_UPGRADE = 300
|
||||||
|
SYS_PSYNCH_MUTEXWAIT = 301
|
||||||
|
SYS_PSYNCH_MUTEXDROP = 302
|
||||||
|
SYS_PSYNCH_CVBROAD = 303
|
||||||
|
SYS_PSYNCH_CVSIGNAL = 304
|
||||||
|
SYS_PSYNCH_CVWAIT = 305
|
||||||
|
SYS_PSYNCH_RW_RDLOCK = 306
|
||||||
|
SYS_PSYNCH_RW_WRLOCK = 307
|
||||||
|
SYS_PSYNCH_RW_UNLOCK = 308
|
||||||
|
SYS_PSYNCH_RW_UNLOCK2 = 309
|
||||||
|
SYS_GETSID = 310
|
||||||
|
SYS_SETTID_WITH_PID = 311
|
||||||
|
SYS_PSYNCH_CVCLRPREPOST = 312
|
||||||
|
SYS_AIO_FSYNC = 313
|
||||||
|
SYS_AIO_RETURN = 314
|
||||||
|
SYS_AIO_SUSPEND = 315
|
||||||
|
SYS_AIO_CANCEL = 316
|
||||||
|
SYS_AIO_ERROR = 317
|
||||||
|
SYS_AIO_READ = 318
|
||||||
|
SYS_AIO_WRITE = 319
|
||||||
|
SYS_LIO_LISTIO = 320
|
||||||
|
SYS_IOPOLICYSYS = 322
|
||||||
|
SYS_PROCESS_POLICY = 323
|
||||||
|
SYS_MLOCKALL = 324
|
||||||
|
SYS_MUNLOCKALL = 325
|
||||||
|
SYS_ISSETUGID = 327
|
||||||
|
SYS___PTHREAD_KILL = 328
|
||||||
|
SYS___PTHREAD_SIGMASK = 329
|
||||||
|
SYS___SIGWAIT = 330
|
||||||
|
SYS___DISABLE_THREADSIGNAL = 331
|
||||||
|
SYS___PTHREAD_MARKCANCEL = 332
|
||||||
|
SYS___PTHREAD_CANCELED = 333
|
||||||
|
SYS___SEMWAIT_SIGNAL = 334
|
||||||
|
SYS_PROC_INFO = 336
|
||||||
|
SYS_SENDFILE = 337
|
||||||
|
SYS_STAT64 = 338
|
||||||
|
SYS_FSTAT64 = 339
|
||||||
|
SYS_LSTAT64 = 340
|
||||||
|
SYS_STAT64_EXTENDED = 341
|
||||||
|
SYS_LSTAT64_EXTENDED = 342
|
||||||
|
SYS_FSTAT64_EXTENDED = 343
|
||||||
|
SYS_GETDIRENTRIES64 = 344
|
||||||
|
SYS_STATFS64 = 345
|
||||||
|
SYS_FSTATFS64 = 346
|
||||||
|
SYS_GETFSSTAT64 = 347
|
||||||
|
SYS___PTHREAD_CHDIR = 348
|
||||||
|
SYS___PTHREAD_FCHDIR = 349
|
||||||
|
SYS_AUDIT = 350
|
||||||
|
SYS_AUDITON = 351
|
||||||
|
SYS_GETAUID = 353
|
||||||
|
SYS_SETAUID = 354
|
||||||
|
SYS_GETAUDIT_ADDR = 357
|
||||||
|
SYS_SETAUDIT_ADDR = 358
|
||||||
|
SYS_AUDITCTL = 359
|
||||||
|
SYS_BSDTHREAD_CREATE = 360
|
||||||
|
SYS_BSDTHREAD_TERMINATE = 361
|
||||||
|
SYS_KQUEUE = 362
|
||||||
|
SYS_KEVENT = 363
|
||||||
|
SYS_LCHOWN = 364
|
||||||
|
SYS_BSDTHREAD_REGISTER = 366
|
||||||
|
SYS_WORKQ_OPEN = 367
|
||||||
|
SYS_WORKQ_KERNRETURN = 368
|
||||||
|
SYS_KEVENT64 = 369
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL = 370
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
|
||||||
|
SYS_THREAD_SELFID = 372
|
||||||
|
SYS_LEDGER = 373
|
||||||
|
SYS_KEVENT_QOS = 374
|
||||||
|
SYS_KEVENT_ID = 375
|
||||||
|
SYS___MAC_EXECVE = 380
|
||||||
|
SYS___MAC_SYSCALL = 381
|
||||||
|
SYS___MAC_GET_FILE = 382
|
||||||
|
SYS___MAC_SET_FILE = 383
|
||||||
|
SYS___MAC_GET_LINK = 384
|
||||||
|
SYS___MAC_SET_LINK = 385
|
||||||
|
SYS___MAC_GET_PROC = 386
|
||||||
|
SYS___MAC_SET_PROC = 387
|
||||||
|
SYS___MAC_GET_FD = 388
|
||||||
|
SYS___MAC_SET_FD = 389
|
||||||
|
SYS___MAC_GET_PID = 390
|
||||||
|
SYS_PSELECT = 394
|
||||||
|
SYS_PSELECT_NOCANCEL = 395
|
||||||
|
SYS_READ_NOCANCEL = 396
|
||||||
|
SYS_WRITE_NOCANCEL = 397
|
||||||
|
SYS_OPEN_NOCANCEL = 398
|
||||||
|
SYS_CLOSE_NOCANCEL = 399
|
||||||
|
SYS_WAIT4_NOCANCEL = 400
|
||||||
|
SYS_RECVMSG_NOCANCEL = 401
|
||||||
|
SYS_SENDMSG_NOCANCEL = 402
|
||||||
|
SYS_RECVFROM_NOCANCEL = 403
|
||||||
|
SYS_ACCEPT_NOCANCEL = 404
|
||||||
|
SYS_MSYNC_NOCANCEL = 405
|
||||||
|
SYS_FCNTL_NOCANCEL = 406
|
||||||
|
SYS_SELECT_NOCANCEL = 407
|
||||||
|
SYS_FSYNC_NOCANCEL = 408
|
||||||
|
SYS_CONNECT_NOCANCEL = 409
|
||||||
|
SYS_SIGSUSPEND_NOCANCEL = 410
|
||||||
|
SYS_READV_NOCANCEL = 411
|
||||||
|
SYS_WRITEV_NOCANCEL = 412
|
||||||
|
SYS_SENDTO_NOCANCEL = 413
|
||||||
|
SYS_PREAD_NOCANCEL = 414
|
||||||
|
SYS_PWRITE_NOCANCEL = 415
|
||||||
|
SYS_WAITID_NOCANCEL = 416
|
||||||
|
SYS_POLL_NOCANCEL = 417
|
||||||
|
SYS_MSGSND_NOCANCEL = 418
|
||||||
|
SYS_MSGRCV_NOCANCEL = 419
|
||||||
|
SYS_SEM_WAIT_NOCANCEL = 420
|
||||||
|
SYS_AIO_SUSPEND_NOCANCEL = 421
|
||||||
|
SYS___SIGWAIT_NOCANCEL = 422
|
||||||
|
SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
|
||||||
|
SYS___MAC_MOUNT = 424
|
||||||
|
SYS___MAC_GET_MOUNT = 425
|
||||||
|
SYS___MAC_GETFSSTAT = 426
|
||||||
|
SYS_FSGETPATH = 427
|
||||||
|
SYS_AUDIT_SESSION_SELF = 428
|
||||||
|
SYS_AUDIT_SESSION_JOIN = 429
|
||||||
|
SYS_FILEPORT_MAKEPORT = 430
|
||||||
|
SYS_FILEPORT_MAKEFD = 431
|
||||||
|
SYS_AUDIT_SESSION_PORT = 432
|
||||||
|
SYS_PID_SUSPEND = 433
|
||||||
|
SYS_PID_RESUME = 434
|
||||||
|
SYS_PID_HIBERNATE = 435
|
||||||
|
SYS_PID_SHUTDOWN_SOCKETS = 436
|
||||||
|
SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
|
||||||
|
SYS_KAS_INFO = 439
|
||||||
|
SYS_MEMORYSTATUS_CONTROL = 440
|
||||||
|
SYS_GUARDED_OPEN_NP = 441
|
||||||
|
SYS_GUARDED_CLOSE_NP = 442
|
||||||
|
SYS_GUARDED_KQUEUE_NP = 443
|
||||||
|
SYS_CHANGE_FDGUARD_NP = 444
|
||||||
|
SYS_USRCTL = 445
|
||||||
|
SYS_PROC_RLIMIT_CONTROL = 446
|
||||||
|
SYS_CONNECTX = 447
|
||||||
|
SYS_DISCONNECTX = 448
|
||||||
|
SYS_PEELOFF = 449
|
||||||
|
SYS_SOCKET_DELEGATE = 450
|
||||||
|
SYS_TELEMETRY = 451
|
||||||
|
SYS_PROC_UUID_POLICY = 452
|
||||||
|
SYS_MEMORYSTATUS_GET_LEVEL = 453
|
||||||
|
SYS_SYSTEM_OVERRIDE = 454
|
||||||
|
SYS_VFS_PURGE = 455
|
||||||
|
SYS_SFI_CTL = 456
|
||||||
|
SYS_SFI_PIDCTL = 457
|
||||||
|
SYS_COALITION = 458
|
||||||
|
SYS_COALITION_INFO = 459
|
||||||
|
SYS_NECP_MATCH_POLICY = 460
|
||||||
|
SYS_GETATTRLISTBULK = 461
|
||||||
|
SYS_CLONEFILEAT = 462
|
||||||
|
SYS_OPENAT = 463
|
||||||
|
SYS_OPENAT_NOCANCEL = 464
|
||||||
|
SYS_RENAMEAT = 465
|
||||||
|
SYS_FACCESSAT = 466
|
||||||
|
SYS_FCHMODAT = 467
|
||||||
|
SYS_FCHOWNAT = 468
|
||||||
|
SYS_FSTATAT = 469
|
||||||
|
SYS_FSTATAT64 = 470
|
||||||
|
SYS_LINKAT = 471
|
||||||
|
SYS_UNLINKAT = 472
|
||||||
|
SYS_READLINKAT = 473
|
||||||
|
SYS_SYMLINKAT = 474
|
||||||
|
SYS_MKDIRAT = 475
|
||||||
|
SYS_GETATTRLISTAT = 476
|
||||||
|
SYS_PROC_TRACE_LOG = 477
|
||||||
|
SYS_BSDTHREAD_CTL = 478
|
||||||
|
SYS_OPENBYID_NP = 479
|
||||||
|
SYS_RECVMSG_X = 480
|
||||||
|
SYS_SENDMSG_X = 481
|
||||||
|
SYS_THREAD_SELFUSAGE = 482
|
||||||
|
SYS_CSRCTL = 483
|
||||||
|
SYS_GUARDED_OPEN_DPROTECTED_NP = 484
|
||||||
|
SYS_GUARDED_WRITE_NP = 485
|
||||||
|
SYS_GUARDED_PWRITE_NP = 486
|
||||||
|
SYS_GUARDED_WRITEV_NP = 487
|
||||||
|
SYS_RENAMEATX_NP = 488
|
||||||
|
SYS_MREMAP_ENCRYPTED = 489
|
||||||
|
SYS_NETAGENT_TRIGGER = 490
|
||||||
|
SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
|
||||||
|
SYS_MICROSTACKSHOT = 492
|
||||||
|
SYS_GRAB_PGO_DATA = 493
|
||||||
|
SYS_PERSONA = 494
|
||||||
|
SYS_WORK_INTERVAL_CTL = 499
|
||||||
|
SYS_GETENTROPY = 500
|
||||||
|
SYS_NECP_OPEN = 501
|
||||||
|
SYS_NECP_CLIENT_ACTION = 502
|
||||||
|
SYS___NEXUS_OPEN = 503
|
||||||
|
SYS___NEXUS_REGISTER = 504
|
||||||
|
SYS___NEXUS_DEREGISTER = 505
|
||||||
|
SYS___NEXUS_CREATE = 506
|
||||||
|
SYS___NEXUS_DESTROY = 507
|
||||||
|
SYS___NEXUS_GET_OPT = 508
|
||||||
|
SYS___NEXUS_SET_OPT = 509
|
||||||
|
SYS___CHANNEL_OPEN = 510
|
||||||
|
SYS___CHANNEL_GET_INFO = 511
|
||||||
|
SYS___CHANNEL_SYNC = 512
|
||||||
|
SYS___CHANNEL_GET_OPT = 513
|
||||||
|
SYS___CHANNEL_SET_OPT = 514
|
||||||
|
SYS_ULOCK_WAIT = 515
|
||||||
|
SYS_ULOCK_WAKE = 516
|
||||||
|
SYS_FCLONEFILEAT = 517
|
||||||
|
SYS_FS_SNAPSHOT = 518
|
||||||
|
SYS_TERMINATE_WITH_PAYLOAD = 520
|
||||||
|
SYS_ABORT_WITH_PAYLOAD = 521
|
||||||
|
SYS_NECP_SESSION_OPEN = 522
|
||||||
|
SYS_NECP_SESSION_ACTION = 523
|
||||||
|
SYS_SETATTRLISTAT = 524
|
||||||
|
SYS_NET_QOS_GUIDELINE = 525
|
||||||
|
SYS_FMOUNT = 526
|
||||||
|
SYS_NTP_ADJTIME = 527
|
||||||
|
SYS_NTP_GETTIME = 528
|
||||||
|
SYS_OS_FAULT_WITH_PAYLOAD = 529
|
||||||
|
SYS_MAXSYSCALL = 530
|
||||||
|
SYS_INVALID = 63
|
||||||
|
)
|
|
@ -0,0 +1,437 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// +build arm64,darwin
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
// Deprecated: Use libSystem wrappers instead of direct syscalls.
|
||||||
|
const (
|
||||||
|
SYS_SYSCALL = 0
|
||||||
|
SYS_EXIT = 1
|
||||||
|
SYS_FORK = 2
|
||||||
|
SYS_READ = 3
|
||||||
|
SYS_WRITE = 4
|
||||||
|
SYS_OPEN = 5
|
||||||
|
SYS_CLOSE = 6
|
||||||
|
SYS_WAIT4 = 7
|
||||||
|
SYS_LINK = 9
|
||||||
|
SYS_UNLINK = 10
|
||||||
|
SYS_CHDIR = 12
|
||||||
|
SYS_FCHDIR = 13
|
||||||
|
SYS_MKNOD = 14
|
||||||
|
SYS_CHMOD = 15
|
||||||
|
SYS_CHOWN = 16
|
||||||
|
SYS_GETFSSTAT = 18
|
||||||
|
SYS_GETPID = 20
|
||||||
|
SYS_SETUID = 23
|
||||||
|
SYS_GETUID = 24
|
||||||
|
SYS_GETEUID = 25
|
||||||
|
SYS_PTRACE = 26
|
||||||
|
SYS_RECVMSG = 27
|
||||||
|
SYS_SENDMSG = 28
|
||||||
|
SYS_RECVFROM = 29
|
||||||
|
SYS_ACCEPT = 30
|
||||||
|
SYS_GETPEERNAME = 31
|
||||||
|
SYS_GETSOCKNAME = 32
|
||||||
|
SYS_ACCESS = 33
|
||||||
|
SYS_CHFLAGS = 34
|
||||||
|
SYS_FCHFLAGS = 35
|
||||||
|
SYS_SYNC = 36
|
||||||
|
SYS_KILL = 37
|
||||||
|
SYS_GETPPID = 39
|
||||||
|
SYS_DUP = 41
|
||||||
|
SYS_PIPE = 42
|
||||||
|
SYS_GETEGID = 43
|
||||||
|
SYS_SIGACTION = 46
|
||||||
|
SYS_GETGID = 47
|
||||||
|
SYS_SIGPROCMASK = 48
|
||||||
|
SYS_GETLOGIN = 49
|
||||||
|
SYS_SETLOGIN = 50
|
||||||
|
SYS_ACCT = 51
|
||||||
|
SYS_SIGPENDING = 52
|
||||||
|
SYS_SIGALTSTACK = 53
|
||||||
|
SYS_IOCTL = 54
|
||||||
|
SYS_REBOOT = 55
|
||||||
|
SYS_REVOKE = 56
|
||||||
|
SYS_SYMLINK = 57
|
||||||
|
SYS_READLINK = 58
|
||||||
|
SYS_EXECVE = 59
|
||||||
|
SYS_UMASK = 60
|
||||||
|
SYS_CHROOT = 61
|
||||||
|
SYS_MSYNC = 65
|
||||||
|
SYS_VFORK = 66
|
||||||
|
SYS_MUNMAP = 73
|
||||||
|
SYS_MPROTECT = 74
|
||||||
|
SYS_MADVISE = 75
|
||||||
|
SYS_MINCORE = 78
|
||||||
|
SYS_GETGROUPS = 79
|
||||||
|
SYS_SETGROUPS = 80
|
||||||
|
SYS_GETPGRP = 81
|
||||||
|
SYS_SETPGID = 82
|
||||||
|
SYS_SETITIMER = 83
|
||||||
|
SYS_SWAPON = 85
|
||||||
|
SYS_GETITIMER = 86
|
||||||
|
SYS_GETDTABLESIZE = 89
|
||||||
|
SYS_DUP2 = 90
|
||||||
|
SYS_FCNTL = 92
|
||||||
|
SYS_SELECT = 93
|
||||||
|
SYS_FSYNC = 95
|
||||||
|
SYS_SETPRIORITY = 96
|
||||||
|
SYS_SOCKET = 97
|
||||||
|
SYS_CONNECT = 98
|
||||||
|
SYS_GETPRIORITY = 100
|
||||||
|
SYS_BIND = 104
|
||||||
|
SYS_SETSOCKOPT = 105
|
||||||
|
SYS_LISTEN = 106
|
||||||
|
SYS_SIGSUSPEND = 111
|
||||||
|
SYS_GETTIMEOFDAY = 116
|
||||||
|
SYS_GETRUSAGE = 117
|
||||||
|
SYS_GETSOCKOPT = 118
|
||||||
|
SYS_READV = 120
|
||||||
|
SYS_WRITEV = 121
|
||||||
|
SYS_SETTIMEOFDAY = 122
|
||||||
|
SYS_FCHOWN = 123
|
||||||
|
SYS_FCHMOD = 124
|
||||||
|
SYS_SETREUID = 126
|
||||||
|
SYS_SETREGID = 127
|
||||||
|
SYS_RENAME = 128
|
||||||
|
SYS_FLOCK = 131
|
||||||
|
SYS_MKFIFO = 132
|
||||||
|
SYS_SENDTO = 133
|
||||||
|
SYS_SHUTDOWN = 134
|
||||||
|
SYS_SOCKETPAIR = 135
|
||||||
|
SYS_MKDIR = 136
|
||||||
|
SYS_RMDIR = 137
|
||||||
|
SYS_UTIMES = 138
|
||||||
|
SYS_FUTIMES = 139
|
||||||
|
SYS_ADJTIME = 140
|
||||||
|
SYS_GETHOSTUUID = 142
|
||||||
|
SYS_SETSID = 147
|
||||||
|
SYS_GETPGID = 151
|
||||||
|
SYS_SETPRIVEXEC = 152
|
||||||
|
SYS_PREAD = 153
|
||||||
|
SYS_PWRITE = 154
|
||||||
|
SYS_NFSSVC = 155
|
||||||
|
SYS_STATFS = 157
|
||||||
|
SYS_FSTATFS = 158
|
||||||
|
SYS_UNMOUNT = 159
|
||||||
|
SYS_GETFH = 161
|
||||||
|
SYS_QUOTACTL = 165
|
||||||
|
SYS_MOUNT = 167
|
||||||
|
SYS_CSOPS = 169
|
||||||
|
SYS_CSOPS_AUDITTOKEN = 170
|
||||||
|
SYS_WAITID = 173
|
||||||
|
SYS_KDEBUG_TYPEFILTER = 177
|
||||||
|
SYS_KDEBUG_TRACE_STRING = 178
|
||||||
|
SYS_KDEBUG_TRACE64 = 179
|
||||||
|
SYS_KDEBUG_TRACE = 180
|
||||||
|
SYS_SETGID = 181
|
||||||
|
SYS_SETEGID = 182
|
||||||
|
SYS_SETEUID = 183
|
||||||
|
SYS_SIGRETURN = 184
|
||||||
|
SYS_THREAD_SELFCOUNTS = 186
|
||||||
|
SYS_FDATASYNC = 187
|
||||||
|
SYS_STAT = 188
|
||||||
|
SYS_FSTAT = 189
|
||||||
|
SYS_LSTAT = 190
|
||||||
|
SYS_PATHCONF = 191
|
||||||
|
SYS_FPATHCONF = 192
|
||||||
|
SYS_GETRLIMIT = 194
|
||||||
|
SYS_SETRLIMIT = 195
|
||||||
|
SYS_GETDIRENTRIES = 196
|
||||||
|
SYS_MMAP = 197
|
||||||
|
SYS_LSEEK = 199
|
||||||
|
SYS_TRUNCATE = 200
|
||||||
|
SYS_FTRUNCATE = 201
|
||||||
|
SYS_SYSCTL = 202
|
||||||
|
SYS_MLOCK = 203
|
||||||
|
SYS_MUNLOCK = 204
|
||||||
|
SYS_UNDELETE = 205
|
||||||
|
SYS_OPEN_DPROTECTED_NP = 216
|
||||||
|
SYS_GETATTRLIST = 220
|
||||||
|
SYS_SETATTRLIST = 221
|
||||||
|
SYS_GETDIRENTRIESATTR = 222
|
||||||
|
SYS_EXCHANGEDATA = 223
|
||||||
|
SYS_SEARCHFS = 225
|
||||||
|
SYS_DELETE = 226
|
||||||
|
SYS_COPYFILE = 227
|
||||||
|
SYS_FGETATTRLIST = 228
|
||||||
|
SYS_FSETATTRLIST = 229
|
||||||
|
SYS_POLL = 230
|
||||||
|
SYS_WATCHEVENT = 231
|
||||||
|
SYS_WAITEVENT = 232
|
||||||
|
SYS_MODWATCH = 233
|
||||||
|
SYS_GETXATTR = 234
|
||||||
|
SYS_FGETXATTR = 235
|
||||||
|
SYS_SETXATTR = 236
|
||||||
|
SYS_FSETXATTR = 237
|
||||||
|
SYS_REMOVEXATTR = 238
|
||||||
|
SYS_FREMOVEXATTR = 239
|
||||||
|
SYS_LISTXATTR = 240
|
||||||
|
SYS_FLISTXATTR = 241
|
||||||
|
SYS_FSCTL = 242
|
||||||
|
SYS_INITGROUPS = 243
|
||||||
|
SYS_POSIX_SPAWN = 244
|
||||||
|
SYS_FFSCTL = 245
|
||||||
|
SYS_NFSCLNT = 247
|
||||||
|
SYS_FHOPEN = 248
|
||||||
|
SYS_MINHERIT = 250
|
||||||
|
SYS_SEMSYS = 251
|
||||||
|
SYS_MSGSYS = 252
|
||||||
|
SYS_SHMSYS = 253
|
||||||
|
SYS_SEMCTL = 254
|
||||||
|
SYS_SEMGET = 255
|
||||||
|
SYS_SEMOP = 256
|
||||||
|
SYS_MSGCTL = 258
|
||||||
|
SYS_MSGGET = 259
|
||||||
|
SYS_MSGSND = 260
|
||||||
|
SYS_MSGRCV = 261
|
||||||
|
SYS_SHMAT = 262
|
||||||
|
SYS_SHMCTL = 263
|
||||||
|
SYS_SHMDT = 264
|
||||||
|
SYS_SHMGET = 265
|
||||||
|
SYS_SHM_OPEN = 266
|
||||||
|
SYS_SHM_UNLINK = 267
|
||||||
|
SYS_SEM_OPEN = 268
|
||||||
|
SYS_SEM_CLOSE = 269
|
||||||
|
SYS_SEM_UNLINK = 270
|
||||||
|
SYS_SEM_WAIT = 271
|
||||||
|
SYS_SEM_TRYWAIT = 272
|
||||||
|
SYS_SEM_POST = 273
|
||||||
|
SYS_SYSCTLBYNAME = 274
|
||||||
|
SYS_OPEN_EXTENDED = 277
|
||||||
|
SYS_UMASK_EXTENDED = 278
|
||||||
|
SYS_STAT_EXTENDED = 279
|
||||||
|
SYS_LSTAT_EXTENDED = 280
|
||||||
|
SYS_FSTAT_EXTENDED = 281
|
||||||
|
SYS_CHMOD_EXTENDED = 282
|
||||||
|
SYS_FCHMOD_EXTENDED = 283
|
||||||
|
SYS_ACCESS_EXTENDED = 284
|
||||||
|
SYS_SETTID = 285
|
||||||
|
SYS_GETTID = 286
|
||||||
|
SYS_SETSGROUPS = 287
|
||||||
|
SYS_GETSGROUPS = 288
|
||||||
|
SYS_SETWGROUPS = 289
|
||||||
|
SYS_GETWGROUPS = 290
|
||||||
|
SYS_MKFIFO_EXTENDED = 291
|
||||||
|
SYS_MKDIR_EXTENDED = 292
|
||||||
|
SYS_IDENTITYSVC = 293
|
||||||
|
SYS_SHARED_REGION_CHECK_NP = 294
|
||||||
|
SYS_VM_PRESSURE_MONITOR = 296
|
||||||
|
SYS_PSYNCH_RW_LONGRDLOCK = 297
|
||||||
|
SYS_PSYNCH_RW_YIELDWRLOCK = 298
|
||||||
|
SYS_PSYNCH_RW_DOWNGRADE = 299
|
||||||
|
SYS_PSYNCH_RW_UPGRADE = 300
|
||||||
|
SYS_PSYNCH_MUTEXWAIT = 301
|
||||||
|
SYS_PSYNCH_MUTEXDROP = 302
|
||||||
|
SYS_PSYNCH_CVBROAD = 303
|
||||||
|
SYS_PSYNCH_CVSIGNAL = 304
|
||||||
|
SYS_PSYNCH_CVWAIT = 305
|
||||||
|
SYS_PSYNCH_RW_RDLOCK = 306
|
||||||
|
SYS_PSYNCH_RW_WRLOCK = 307
|
||||||
|
SYS_PSYNCH_RW_UNLOCK = 308
|
||||||
|
SYS_PSYNCH_RW_UNLOCK2 = 309
|
||||||
|
SYS_GETSID = 310
|
||||||
|
SYS_SETTID_WITH_PID = 311
|
||||||
|
SYS_PSYNCH_CVCLRPREPOST = 312
|
||||||
|
SYS_AIO_FSYNC = 313
|
||||||
|
SYS_AIO_RETURN = 314
|
||||||
|
SYS_AIO_SUSPEND = 315
|
||||||
|
SYS_AIO_CANCEL = 316
|
||||||
|
SYS_AIO_ERROR = 317
|
||||||
|
SYS_AIO_READ = 318
|
||||||
|
SYS_AIO_WRITE = 319
|
||||||
|
SYS_LIO_LISTIO = 320
|
||||||
|
SYS_IOPOLICYSYS = 322
|
||||||
|
SYS_PROCESS_POLICY = 323
|
||||||
|
SYS_MLOCKALL = 324
|
||||||
|
SYS_MUNLOCKALL = 325
|
||||||
|
SYS_ISSETUGID = 327
|
||||||
|
SYS___PTHREAD_KILL = 328
|
||||||
|
SYS___PTHREAD_SIGMASK = 329
|
||||||
|
SYS___SIGWAIT = 330
|
||||||
|
SYS___DISABLE_THREADSIGNAL = 331
|
||||||
|
SYS___PTHREAD_MARKCANCEL = 332
|
||||||
|
SYS___PTHREAD_CANCELED = 333
|
||||||
|
SYS___SEMWAIT_SIGNAL = 334
|
||||||
|
SYS_PROC_INFO = 336
|
||||||
|
SYS_SENDFILE = 337
|
||||||
|
SYS_STAT64 = 338
|
||||||
|
SYS_FSTAT64 = 339
|
||||||
|
SYS_LSTAT64 = 340
|
||||||
|
SYS_STAT64_EXTENDED = 341
|
||||||
|
SYS_LSTAT64_EXTENDED = 342
|
||||||
|
SYS_FSTAT64_EXTENDED = 343
|
||||||
|
SYS_GETDIRENTRIES64 = 344
|
||||||
|
SYS_STATFS64 = 345
|
||||||
|
SYS_FSTATFS64 = 346
|
||||||
|
SYS_GETFSSTAT64 = 347
|
||||||
|
SYS___PTHREAD_CHDIR = 348
|
||||||
|
SYS___PTHREAD_FCHDIR = 349
|
||||||
|
SYS_AUDIT = 350
|
||||||
|
SYS_AUDITON = 351
|
||||||
|
SYS_GETAUID = 353
|
||||||
|
SYS_SETAUID = 354
|
||||||
|
SYS_GETAUDIT_ADDR = 357
|
||||||
|
SYS_SETAUDIT_ADDR = 358
|
||||||
|
SYS_AUDITCTL = 359
|
||||||
|
SYS_BSDTHREAD_CREATE = 360
|
||||||
|
SYS_BSDTHREAD_TERMINATE = 361
|
||||||
|
SYS_KQUEUE = 362
|
||||||
|
SYS_KEVENT = 363
|
||||||
|
SYS_LCHOWN = 364
|
||||||
|
SYS_BSDTHREAD_REGISTER = 366
|
||||||
|
SYS_WORKQ_OPEN = 367
|
||||||
|
SYS_WORKQ_KERNRETURN = 368
|
||||||
|
SYS_KEVENT64 = 369
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL = 370
|
||||||
|
SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
|
||||||
|
SYS_THREAD_SELFID = 372
|
||||||
|
SYS_LEDGER = 373
|
||||||
|
SYS_KEVENT_QOS = 374
|
||||||
|
SYS_KEVENT_ID = 375
|
||||||
|
SYS___MAC_EXECVE = 380
|
||||||
|
SYS___MAC_SYSCALL = 381
|
||||||
|
SYS___MAC_GET_FILE = 382
|
||||||
|
SYS___MAC_SET_FILE = 383
|
||||||
|
SYS___MAC_GET_LINK = 384
|
||||||
|
SYS___MAC_SET_LINK = 385
|
||||||
|
SYS___MAC_GET_PROC = 386
|
||||||
|
SYS___MAC_SET_PROC = 387
|
||||||
|
SYS___MAC_GET_FD = 388
|
||||||
|
SYS___MAC_SET_FD = 389
|
||||||
|
SYS___MAC_GET_PID = 390
|
||||||
|
SYS_PSELECT = 394
|
||||||
|
SYS_PSELECT_NOCANCEL = 395
|
||||||
|
SYS_READ_NOCANCEL = 396
|
||||||
|
SYS_WRITE_NOCANCEL = 397
|
||||||
|
SYS_OPEN_NOCANCEL = 398
|
||||||
|
SYS_CLOSE_NOCANCEL = 399
|
||||||
|
SYS_WAIT4_NOCANCEL = 400
|
||||||
|
SYS_RECVMSG_NOCANCEL = 401
|
||||||
|
SYS_SENDMSG_NOCANCEL = 402
|
||||||
|
SYS_RECVFROM_NOCANCEL = 403
|
||||||
|
SYS_ACCEPT_NOCANCEL = 404
|
||||||
|
SYS_MSYNC_NOCANCEL = 405
|
||||||
|
SYS_FCNTL_NOCANCEL = 406
|
||||||
|
SYS_SELECT_NOCANCEL = 407
|
||||||
|
SYS_FSYNC_NOCANCEL = 408
|
||||||
|
SYS_CONNECT_NOCANCEL = 409
|
||||||
|
SYS_SIGSUSPEND_NOCANCEL = 410
|
||||||
|
SYS_READV_NOCANCEL = 411
|
||||||
|
SYS_WRITEV_NOCANCEL = 412
|
||||||
|
SYS_SENDTO_NOCANCEL = 413
|
||||||
|
SYS_PREAD_NOCANCEL = 414
|
||||||
|
SYS_PWRITE_NOCANCEL = 415
|
||||||
|
SYS_WAITID_NOCANCEL = 416
|
||||||
|
SYS_POLL_NOCANCEL = 417
|
||||||
|
SYS_MSGSND_NOCANCEL = 418
|
||||||
|
SYS_MSGRCV_NOCANCEL = 419
|
||||||
|
SYS_SEM_WAIT_NOCANCEL = 420
|
||||||
|
SYS_AIO_SUSPEND_NOCANCEL = 421
|
||||||
|
SYS___SIGWAIT_NOCANCEL = 422
|
||||||
|
SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
|
||||||
|
SYS___MAC_MOUNT = 424
|
||||||
|
SYS___MAC_GET_MOUNT = 425
|
||||||
|
SYS___MAC_GETFSSTAT = 426
|
||||||
|
SYS_FSGETPATH = 427
|
||||||
|
SYS_AUDIT_SESSION_SELF = 428
|
||||||
|
SYS_AUDIT_SESSION_JOIN = 429
|
||||||
|
SYS_FILEPORT_MAKEPORT = 430
|
||||||
|
SYS_FILEPORT_MAKEFD = 431
|
||||||
|
SYS_AUDIT_SESSION_PORT = 432
|
||||||
|
SYS_PID_SUSPEND = 433
|
||||||
|
SYS_PID_RESUME = 434
|
||||||
|
SYS_PID_HIBERNATE = 435
|
||||||
|
SYS_PID_SHUTDOWN_SOCKETS = 436
|
||||||
|
SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
|
||||||
|
SYS_KAS_INFO = 439
|
||||||
|
SYS_MEMORYSTATUS_CONTROL = 440
|
||||||
|
SYS_GUARDED_OPEN_NP = 441
|
||||||
|
SYS_GUARDED_CLOSE_NP = 442
|
||||||
|
SYS_GUARDED_KQUEUE_NP = 443
|
||||||
|
SYS_CHANGE_FDGUARD_NP = 444
|
||||||
|
SYS_USRCTL = 445
|
||||||
|
SYS_PROC_RLIMIT_CONTROL = 446
|
||||||
|
SYS_CONNECTX = 447
|
||||||
|
SYS_DISCONNECTX = 448
|
||||||
|
SYS_PEELOFF = 449
|
||||||
|
SYS_SOCKET_DELEGATE = 450
|
||||||
|
SYS_TELEMETRY = 451
|
||||||
|
SYS_PROC_UUID_POLICY = 452
|
||||||
|
SYS_MEMORYSTATUS_GET_LEVEL = 453
|
||||||
|
SYS_SYSTEM_OVERRIDE = 454
|
||||||
|
SYS_VFS_PURGE = 455
|
||||||
|
SYS_SFI_CTL = 456
|
||||||
|
SYS_SFI_PIDCTL = 457
|
||||||
|
SYS_COALITION = 458
|
||||||
|
SYS_COALITION_INFO = 459
|
||||||
|
SYS_NECP_MATCH_POLICY = 460
|
||||||
|
SYS_GETATTRLISTBULK = 461
|
||||||
|
SYS_CLONEFILEAT = 462
|
||||||
|
SYS_OPENAT = 463
|
||||||
|
SYS_OPENAT_NOCANCEL = 464
|
||||||
|
SYS_RENAMEAT = 465
|
||||||
|
SYS_FACCESSAT = 466
|
||||||
|
SYS_FCHMODAT = 467
|
||||||
|
SYS_FCHOWNAT = 468
|
||||||
|
SYS_FSTATAT = 469
|
||||||
|
SYS_FSTATAT64 = 470
|
||||||
|
SYS_LINKAT = 471
|
||||||
|
SYS_UNLINKAT = 472
|
||||||
|
SYS_READLINKAT = 473
|
||||||
|
SYS_SYMLINKAT = 474
|
||||||
|
SYS_MKDIRAT = 475
|
||||||
|
SYS_GETATTRLISTAT = 476
|
||||||
|
SYS_PROC_TRACE_LOG = 477
|
||||||
|
SYS_BSDTHREAD_CTL = 478
|
||||||
|
SYS_OPENBYID_NP = 479
|
||||||
|
SYS_RECVMSG_X = 480
|
||||||
|
SYS_SENDMSG_X = 481
|
||||||
|
SYS_THREAD_SELFUSAGE = 482
|
||||||
|
SYS_CSRCTL = 483
|
||||||
|
SYS_GUARDED_OPEN_DPROTECTED_NP = 484
|
||||||
|
SYS_GUARDED_WRITE_NP = 485
|
||||||
|
SYS_GUARDED_PWRITE_NP = 486
|
||||||
|
SYS_GUARDED_WRITEV_NP = 487
|
||||||
|
SYS_RENAMEATX_NP = 488
|
||||||
|
SYS_MREMAP_ENCRYPTED = 489
|
||||||
|
SYS_NETAGENT_TRIGGER = 490
|
||||||
|
SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
|
||||||
|
SYS_MICROSTACKSHOT = 492
|
||||||
|
SYS_GRAB_PGO_DATA = 493
|
||||||
|
SYS_PERSONA = 494
|
||||||
|
SYS_WORK_INTERVAL_CTL = 499
|
||||||
|
SYS_GETENTROPY = 500
|
||||||
|
SYS_NECP_OPEN = 501
|
||||||
|
SYS_NECP_CLIENT_ACTION = 502
|
||||||
|
SYS___NEXUS_OPEN = 503
|
||||||
|
SYS___NEXUS_REGISTER = 504
|
||||||
|
SYS___NEXUS_DEREGISTER = 505
|
||||||
|
SYS___NEXUS_CREATE = 506
|
||||||
|
SYS___NEXUS_DESTROY = 507
|
||||||
|
SYS___NEXUS_GET_OPT = 508
|
||||||
|
SYS___NEXUS_SET_OPT = 509
|
||||||
|
SYS___CHANNEL_OPEN = 510
|
||||||
|
SYS___CHANNEL_GET_INFO = 511
|
||||||
|
SYS___CHANNEL_SYNC = 512
|
||||||
|
SYS___CHANNEL_GET_OPT = 513
|
||||||
|
SYS___CHANNEL_SET_OPT = 514
|
||||||
|
SYS_ULOCK_WAIT = 515
|
||||||
|
SYS_ULOCK_WAKE = 516
|
||||||
|
SYS_FCLONEFILEAT = 517
|
||||||
|
SYS_FS_SNAPSHOT = 518
|
||||||
|
SYS_TERMINATE_WITH_PAYLOAD = 520
|
||||||
|
SYS_ABORT_WITH_PAYLOAD = 521
|
||||||
|
SYS_NECP_SESSION_OPEN = 522
|
||||||
|
SYS_NECP_SESSION_ACTION = 523
|
||||||
|
SYS_SETATTRLISTAT = 524
|
||||||
|
SYS_NET_QOS_GUIDELINE = 525
|
||||||
|
SYS_FMOUNT = 526
|
||||||
|
SYS_NTP_ADJTIME = 527
|
||||||
|
SYS_NTP_GETTIME = 528
|
||||||
|
SYS_OS_FAULT_WITH_PAYLOAD = 529
|
||||||
|
SYS_MAXSYSCALL = 530
|
||||||
|
SYS_INVALID = 63
|
||||||
|
)
|
|
@ -194,6 +194,15 @@ type RawSockaddrAny struct {
|
||||||
Pad [92]int8
|
Pad [92]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrCtl struct {
|
||||||
|
Sc_len uint8
|
||||||
|
Sc_family uint8
|
||||||
|
Ss_sysaddr uint16
|
||||||
|
Sc_id uint32
|
||||||
|
Sc_unit uint32
|
||||||
|
Sc_reserved [5]uint32
|
||||||
|
}
|
||||||
|
|
||||||
type _Socklen uint32
|
type _Socklen uint32
|
||||||
|
|
||||||
type Linger struct {
|
type Linger struct {
|
||||||
|
@ -258,6 +267,7 @@ const (
|
||||||
SizeofSockaddrAny = 0x6c
|
SizeofSockaddrAny = 0x6c
|
||||||
SizeofSockaddrUnix = 0x6a
|
SizeofSockaddrUnix = 0x6a
|
||||||
SizeofSockaddrDatalink = 0x14
|
SizeofSockaddrDatalink = 0x14
|
||||||
|
SizeofSockaddrCtl = 0x20
|
||||||
SizeofLinger = 0x8
|
SizeofLinger = 0x8
|
||||||
SizeofIPMreq = 0x8
|
SizeofIPMreq = 0x8
|
||||||
SizeofIPv6Mreq = 0x14
|
SizeofIPv6Mreq = 0x14
|
||||||
|
|
|
@ -199,6 +199,15 @@ type RawSockaddrAny struct {
|
||||||
Pad [92]int8
|
Pad [92]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrCtl struct {
|
||||||
|
Sc_len uint8
|
||||||
|
Sc_family uint8
|
||||||
|
Ss_sysaddr uint16
|
||||||
|
Sc_id uint32
|
||||||
|
Sc_unit uint32
|
||||||
|
Sc_reserved [5]uint32
|
||||||
|
}
|
||||||
|
|
||||||
type _Socklen uint32
|
type _Socklen uint32
|
||||||
|
|
||||||
type Linger struct {
|
type Linger struct {
|
||||||
|
@ -263,6 +272,7 @@ const (
|
||||||
SizeofSockaddrAny = 0x6c
|
SizeofSockaddrAny = 0x6c
|
||||||
SizeofSockaddrUnix = 0x6a
|
SizeofSockaddrUnix = 0x6a
|
||||||
SizeofSockaddrDatalink = 0x14
|
SizeofSockaddrDatalink = 0x14
|
||||||
|
SizeofSockaddrCtl = 0x20
|
||||||
SizeofLinger = 0x8
|
SizeofLinger = 0x8
|
||||||
SizeofIPMreq = 0x8
|
SizeofIPMreq = 0x8
|
||||||
SizeofIPv6Mreq = 0x14
|
SizeofIPv6Mreq = 0x14
|
||||||
|
|
|
@ -194,6 +194,15 @@ type RawSockaddrAny struct {
|
||||||
Pad [92]int8
|
Pad [92]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrCtl struct {
|
||||||
|
Sc_len uint8
|
||||||
|
Sc_family uint8
|
||||||
|
Ss_sysaddr uint16
|
||||||
|
Sc_id uint32
|
||||||
|
Sc_unit uint32
|
||||||
|
Sc_reserved [5]uint32
|
||||||
|
}
|
||||||
|
|
||||||
type _Socklen uint32
|
type _Socklen uint32
|
||||||
|
|
||||||
type Linger struct {
|
type Linger struct {
|
||||||
|
@ -258,6 +267,7 @@ const (
|
||||||
SizeofSockaddrAny = 0x6c
|
SizeofSockaddrAny = 0x6c
|
||||||
SizeofSockaddrUnix = 0x6a
|
SizeofSockaddrUnix = 0x6a
|
||||||
SizeofSockaddrDatalink = 0x14
|
SizeofSockaddrDatalink = 0x14
|
||||||
|
SizeofSockaddrCtl = 0x20
|
||||||
SizeofLinger = 0x8
|
SizeofLinger = 0x8
|
||||||
SizeofIPMreq = 0x8
|
SizeofIPMreq = 0x8
|
||||||
SizeofIPv6Mreq = 0x14
|
SizeofIPv6Mreq = 0x14
|
||||||
|
|
|
@ -199,6 +199,15 @@ type RawSockaddrAny struct {
|
||||||
Pad [92]int8
|
Pad [92]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrCtl struct {
|
||||||
|
Sc_len uint8
|
||||||
|
Sc_family uint8
|
||||||
|
Ss_sysaddr uint16
|
||||||
|
Sc_id uint32
|
||||||
|
Sc_unit uint32
|
||||||
|
Sc_reserved [5]uint32
|
||||||
|
}
|
||||||
|
|
||||||
type _Socklen uint32
|
type _Socklen uint32
|
||||||
|
|
||||||
type Linger struct {
|
type Linger struct {
|
||||||
|
@ -263,6 +272,7 @@ const (
|
||||||
SizeofSockaddrAny = 0x6c
|
SizeofSockaddrAny = 0x6c
|
||||||
SizeofSockaddrUnix = 0x6a
|
SizeofSockaddrUnix = 0x6a
|
||||||
SizeofSockaddrDatalink = 0x14
|
SizeofSockaddrDatalink = 0x14
|
||||||
|
SizeofSockaddrCtl = 0x20
|
||||||
SizeofLinger = 0x8
|
SizeofLinger = 0x8
|
||||||
SizeofIPMreq = 0x8
|
SizeofIPMreq = 0x8
|
||||||
SizeofIPv6Mreq = 0x14
|
SizeofIPv6Mreq = 0x14
|
||||||
|
|
|
@ -462,170 +462,107 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
NDA_UNSPEC = 0x0
|
NDA_UNSPEC = 0x0
|
||||||
NDA_DST = 0x1
|
NDA_DST = 0x1
|
||||||
NDA_LLADDR = 0x2
|
NDA_LLADDR = 0x2
|
||||||
NDA_CACHEINFO = 0x3
|
NDA_CACHEINFO = 0x3
|
||||||
NDA_PROBES = 0x4
|
NDA_PROBES = 0x4
|
||||||
NDA_VLAN = 0x5
|
NDA_VLAN = 0x5
|
||||||
NDA_PORT = 0x6
|
NDA_PORT = 0x6
|
||||||
NDA_VNI = 0x7
|
NDA_VNI = 0x7
|
||||||
NDA_IFINDEX = 0x8
|
NDA_IFINDEX = 0x8
|
||||||
NDA_MASTER = 0x9
|
NDA_MASTER = 0x9
|
||||||
NDA_LINK_NETNSID = 0xa
|
NDA_LINK_NETNSID = 0xa
|
||||||
NDA_SRC_VNI = 0xb
|
NDA_SRC_VNI = 0xb
|
||||||
NTF_USE = 0x1
|
NTF_USE = 0x1
|
||||||
NTF_SELF = 0x2
|
NTF_SELF = 0x2
|
||||||
NTF_MASTER = 0x4
|
NTF_MASTER = 0x4
|
||||||
NTF_PROXY = 0x8
|
NTF_PROXY = 0x8
|
||||||
NTF_EXT_LEARNED = 0x10
|
NTF_EXT_LEARNED = 0x10
|
||||||
NTF_OFFLOADED = 0x20
|
NTF_OFFLOADED = 0x20
|
||||||
NTF_ROUTER = 0x80
|
NTF_ROUTER = 0x80
|
||||||
NUD_INCOMPLETE = 0x1
|
NUD_INCOMPLETE = 0x1
|
||||||
NUD_REACHABLE = 0x2
|
NUD_REACHABLE = 0x2
|
||||||
NUD_STALE = 0x4
|
NUD_STALE = 0x4
|
||||||
NUD_DELAY = 0x8
|
NUD_DELAY = 0x8
|
||||||
NUD_PROBE = 0x10
|
NUD_PROBE = 0x10
|
||||||
NUD_FAILED = 0x20
|
NUD_FAILED = 0x20
|
||||||
NUD_NOARP = 0x40
|
NUD_NOARP = 0x40
|
||||||
NUD_PERMANENT = 0x80
|
NUD_PERMANENT = 0x80
|
||||||
NUD_NONE = 0x0
|
NUD_NONE = 0x0
|
||||||
IFA_UNSPEC = 0x0
|
IFA_UNSPEC = 0x0
|
||||||
IFA_ADDRESS = 0x1
|
IFA_ADDRESS = 0x1
|
||||||
IFA_LOCAL = 0x2
|
IFA_LOCAL = 0x2
|
||||||
IFA_LABEL = 0x3
|
IFA_LABEL = 0x3
|
||||||
IFA_BROADCAST = 0x4
|
IFA_BROADCAST = 0x4
|
||||||
IFA_ANYCAST = 0x5
|
IFA_ANYCAST = 0x5
|
||||||
IFA_CACHEINFO = 0x6
|
IFA_CACHEINFO = 0x6
|
||||||
IFA_MULTICAST = 0x7
|
IFA_MULTICAST = 0x7
|
||||||
IFA_FLAGS = 0x8
|
IFA_FLAGS = 0x8
|
||||||
IFA_RT_PRIORITY = 0x9
|
IFA_RT_PRIORITY = 0x9
|
||||||
IFA_TARGET_NETNSID = 0xa
|
IFA_TARGET_NETNSID = 0xa
|
||||||
IFLA_UNSPEC = 0x0
|
RT_SCOPE_UNIVERSE = 0x0
|
||||||
IFLA_ADDRESS = 0x1
|
RT_SCOPE_SITE = 0xc8
|
||||||
IFLA_BROADCAST = 0x2
|
RT_SCOPE_LINK = 0xfd
|
||||||
IFLA_IFNAME = 0x3
|
RT_SCOPE_HOST = 0xfe
|
||||||
IFLA_MTU = 0x4
|
RT_SCOPE_NOWHERE = 0xff
|
||||||
IFLA_LINK = 0x5
|
RT_TABLE_UNSPEC = 0x0
|
||||||
IFLA_QDISC = 0x6
|
RT_TABLE_COMPAT = 0xfc
|
||||||
IFLA_STATS = 0x7
|
RT_TABLE_DEFAULT = 0xfd
|
||||||
IFLA_COST = 0x8
|
RT_TABLE_MAIN = 0xfe
|
||||||
IFLA_PRIORITY = 0x9
|
RT_TABLE_LOCAL = 0xff
|
||||||
IFLA_MASTER = 0xa
|
RT_TABLE_MAX = 0xffffffff
|
||||||
IFLA_WIRELESS = 0xb
|
RTA_UNSPEC = 0x0
|
||||||
IFLA_PROTINFO = 0xc
|
RTA_DST = 0x1
|
||||||
IFLA_TXQLEN = 0xd
|
RTA_SRC = 0x2
|
||||||
IFLA_MAP = 0xe
|
RTA_IIF = 0x3
|
||||||
IFLA_WEIGHT = 0xf
|
RTA_OIF = 0x4
|
||||||
IFLA_OPERSTATE = 0x10
|
RTA_GATEWAY = 0x5
|
||||||
IFLA_LINKMODE = 0x11
|
RTA_PRIORITY = 0x6
|
||||||
IFLA_LINKINFO = 0x12
|
RTA_PREFSRC = 0x7
|
||||||
IFLA_NET_NS_PID = 0x13
|
RTA_METRICS = 0x8
|
||||||
IFLA_IFALIAS = 0x14
|
RTA_MULTIPATH = 0x9
|
||||||
IFLA_NUM_VF = 0x15
|
RTA_FLOW = 0xb
|
||||||
IFLA_VFINFO_LIST = 0x16
|
RTA_CACHEINFO = 0xc
|
||||||
IFLA_STATS64 = 0x17
|
RTA_TABLE = 0xf
|
||||||
IFLA_VF_PORTS = 0x18
|
RTA_MARK = 0x10
|
||||||
IFLA_PORT_SELF = 0x19
|
RTA_MFC_STATS = 0x11
|
||||||
IFLA_AF_SPEC = 0x1a
|
RTA_VIA = 0x12
|
||||||
IFLA_GROUP = 0x1b
|
RTA_NEWDST = 0x13
|
||||||
IFLA_NET_NS_FD = 0x1c
|
RTA_PREF = 0x14
|
||||||
IFLA_EXT_MASK = 0x1d
|
RTA_ENCAP_TYPE = 0x15
|
||||||
IFLA_PROMISCUITY = 0x1e
|
RTA_ENCAP = 0x16
|
||||||
IFLA_NUM_TX_QUEUES = 0x1f
|
RTA_EXPIRES = 0x17
|
||||||
IFLA_NUM_RX_QUEUES = 0x20
|
RTA_PAD = 0x18
|
||||||
IFLA_CARRIER = 0x21
|
RTA_UID = 0x19
|
||||||
IFLA_PHYS_PORT_ID = 0x22
|
RTA_TTL_PROPAGATE = 0x1a
|
||||||
IFLA_CARRIER_CHANGES = 0x23
|
RTA_IP_PROTO = 0x1b
|
||||||
IFLA_PHYS_SWITCH_ID = 0x24
|
RTA_SPORT = 0x1c
|
||||||
IFLA_LINK_NETNSID = 0x25
|
RTA_DPORT = 0x1d
|
||||||
IFLA_PHYS_PORT_NAME = 0x26
|
RTN_UNSPEC = 0x0
|
||||||
IFLA_PROTO_DOWN = 0x27
|
RTN_UNICAST = 0x1
|
||||||
IFLA_GSO_MAX_SEGS = 0x28
|
RTN_LOCAL = 0x2
|
||||||
IFLA_GSO_MAX_SIZE = 0x29
|
RTN_BROADCAST = 0x3
|
||||||
IFLA_PAD = 0x2a
|
RTN_ANYCAST = 0x4
|
||||||
IFLA_XDP = 0x2b
|
RTN_MULTICAST = 0x5
|
||||||
IFLA_EVENT = 0x2c
|
RTN_BLACKHOLE = 0x6
|
||||||
IFLA_NEW_NETNSID = 0x2d
|
RTN_UNREACHABLE = 0x7
|
||||||
IFLA_IF_NETNSID = 0x2e
|
RTN_PROHIBIT = 0x8
|
||||||
IFLA_TARGET_NETNSID = 0x2e
|
RTN_THROW = 0x9
|
||||||
IFLA_CARRIER_UP_COUNT = 0x2f
|
RTN_NAT = 0xa
|
||||||
IFLA_CARRIER_DOWN_COUNT = 0x30
|
RTN_XRESOLVE = 0xb
|
||||||
IFLA_NEW_IFINDEX = 0x31
|
SizeofNlMsghdr = 0x10
|
||||||
IFLA_MIN_MTU = 0x32
|
SizeofNlMsgerr = 0x14
|
||||||
IFLA_MAX_MTU = 0x33
|
SizeofRtGenmsg = 0x1
|
||||||
IFLA_PROP_LIST = 0x34
|
SizeofNlAttr = 0x4
|
||||||
IFLA_ALT_IFNAME = 0x35
|
SizeofRtAttr = 0x4
|
||||||
IFLA_PERM_ADDRESS = 0x36
|
SizeofIfInfomsg = 0x10
|
||||||
IFLA_PROTO_DOWN_REASON = 0x37
|
SizeofIfAddrmsg = 0x8
|
||||||
IFLA_MAX = 0x37
|
SizeofIfaCacheinfo = 0x10
|
||||||
IFLA_INFO_KIND = 0x1
|
SizeofRtMsg = 0xc
|
||||||
IFLA_INFO_DATA = 0x2
|
SizeofRtNexthop = 0x8
|
||||||
IFLA_INFO_XSTATS = 0x3
|
SizeofNdUseroptmsg = 0x10
|
||||||
IFLA_INFO_SLAVE_KIND = 0x4
|
SizeofNdMsg = 0xc
|
||||||
IFLA_INFO_SLAVE_DATA = 0x5
|
|
||||||
RT_SCOPE_UNIVERSE = 0x0
|
|
||||||
RT_SCOPE_SITE = 0xc8
|
|
||||||
RT_SCOPE_LINK = 0xfd
|
|
||||||
RT_SCOPE_HOST = 0xfe
|
|
||||||
RT_SCOPE_NOWHERE = 0xff
|
|
||||||
RT_TABLE_UNSPEC = 0x0
|
|
||||||
RT_TABLE_COMPAT = 0xfc
|
|
||||||
RT_TABLE_DEFAULT = 0xfd
|
|
||||||
RT_TABLE_MAIN = 0xfe
|
|
||||||
RT_TABLE_LOCAL = 0xff
|
|
||||||
RT_TABLE_MAX = 0xffffffff
|
|
||||||
RTA_UNSPEC = 0x0
|
|
||||||
RTA_DST = 0x1
|
|
||||||
RTA_SRC = 0x2
|
|
||||||
RTA_IIF = 0x3
|
|
||||||
RTA_OIF = 0x4
|
|
||||||
RTA_GATEWAY = 0x5
|
|
||||||
RTA_PRIORITY = 0x6
|
|
||||||
RTA_PREFSRC = 0x7
|
|
||||||
RTA_METRICS = 0x8
|
|
||||||
RTA_MULTIPATH = 0x9
|
|
||||||
RTA_FLOW = 0xb
|
|
||||||
RTA_CACHEINFO = 0xc
|
|
||||||
RTA_TABLE = 0xf
|
|
||||||
RTA_MARK = 0x10
|
|
||||||
RTA_MFC_STATS = 0x11
|
|
||||||
RTA_VIA = 0x12
|
|
||||||
RTA_NEWDST = 0x13
|
|
||||||
RTA_PREF = 0x14
|
|
||||||
RTA_ENCAP_TYPE = 0x15
|
|
||||||
RTA_ENCAP = 0x16
|
|
||||||
RTA_EXPIRES = 0x17
|
|
||||||
RTA_PAD = 0x18
|
|
||||||
RTA_UID = 0x19
|
|
||||||
RTA_TTL_PROPAGATE = 0x1a
|
|
||||||
RTA_IP_PROTO = 0x1b
|
|
||||||
RTA_SPORT = 0x1c
|
|
||||||
RTA_DPORT = 0x1d
|
|
||||||
RTN_UNSPEC = 0x0
|
|
||||||
RTN_UNICAST = 0x1
|
|
||||||
RTN_LOCAL = 0x2
|
|
||||||
RTN_BROADCAST = 0x3
|
|
||||||
RTN_ANYCAST = 0x4
|
|
||||||
RTN_MULTICAST = 0x5
|
|
||||||
RTN_BLACKHOLE = 0x6
|
|
||||||
RTN_UNREACHABLE = 0x7
|
|
||||||
RTN_PROHIBIT = 0x8
|
|
||||||
RTN_THROW = 0x9
|
|
||||||
RTN_NAT = 0xa
|
|
||||||
RTN_XRESOLVE = 0xb
|
|
||||||
SizeofNlMsghdr = 0x10
|
|
||||||
SizeofNlMsgerr = 0x14
|
|
||||||
SizeofRtGenmsg = 0x1
|
|
||||||
SizeofNlAttr = 0x4
|
|
||||||
SizeofRtAttr = 0x4
|
|
||||||
SizeofIfInfomsg = 0x10
|
|
||||||
SizeofIfAddrmsg = 0x8
|
|
||||||
SizeofIfaCacheinfo = 0x10
|
|
||||||
SizeofRtMsg = 0xc
|
|
||||||
SizeofRtNexthop = 0x8
|
|
||||||
SizeofNdUseroptmsg = 0x10
|
|
||||||
SizeofNdMsg = 0xc
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type NlMsghdr struct {
|
type NlMsghdr struct {
|
||||||
|
@ -1387,6 +1324,394 @@ const (
|
||||||
SizeofTpacketStatsV3 = 0xc
|
SizeofTpacketStatsV3 = 0xc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
IFLA_UNSPEC = 0x0
|
||||||
|
IFLA_ADDRESS = 0x1
|
||||||
|
IFLA_BROADCAST = 0x2
|
||||||
|
IFLA_IFNAME = 0x3
|
||||||
|
IFLA_MTU = 0x4
|
||||||
|
IFLA_LINK = 0x5
|
||||||
|
IFLA_QDISC = 0x6
|
||||||
|
IFLA_STATS = 0x7
|
||||||
|
IFLA_COST = 0x8
|
||||||
|
IFLA_PRIORITY = 0x9
|
||||||
|
IFLA_MASTER = 0xa
|
||||||
|
IFLA_WIRELESS = 0xb
|
||||||
|
IFLA_PROTINFO = 0xc
|
||||||
|
IFLA_TXQLEN = 0xd
|
||||||
|
IFLA_MAP = 0xe
|
||||||
|
IFLA_WEIGHT = 0xf
|
||||||
|
IFLA_OPERSTATE = 0x10
|
||||||
|
IFLA_LINKMODE = 0x11
|
||||||
|
IFLA_LINKINFO = 0x12
|
||||||
|
IFLA_NET_NS_PID = 0x13
|
||||||
|
IFLA_IFALIAS = 0x14
|
||||||
|
IFLA_NUM_VF = 0x15
|
||||||
|
IFLA_VFINFO_LIST = 0x16
|
||||||
|
IFLA_STATS64 = 0x17
|
||||||
|
IFLA_VF_PORTS = 0x18
|
||||||
|
IFLA_PORT_SELF = 0x19
|
||||||
|
IFLA_AF_SPEC = 0x1a
|
||||||
|
IFLA_GROUP = 0x1b
|
||||||
|
IFLA_NET_NS_FD = 0x1c
|
||||||
|
IFLA_EXT_MASK = 0x1d
|
||||||
|
IFLA_PROMISCUITY = 0x1e
|
||||||
|
IFLA_NUM_TX_QUEUES = 0x1f
|
||||||
|
IFLA_NUM_RX_QUEUES = 0x20
|
||||||
|
IFLA_CARRIER = 0x21
|
||||||
|
IFLA_PHYS_PORT_ID = 0x22
|
||||||
|
IFLA_CARRIER_CHANGES = 0x23
|
||||||
|
IFLA_PHYS_SWITCH_ID = 0x24
|
||||||
|
IFLA_LINK_NETNSID = 0x25
|
||||||
|
IFLA_PHYS_PORT_NAME = 0x26
|
||||||
|
IFLA_PROTO_DOWN = 0x27
|
||||||
|
IFLA_GSO_MAX_SEGS = 0x28
|
||||||
|
IFLA_GSO_MAX_SIZE = 0x29
|
||||||
|
IFLA_PAD = 0x2a
|
||||||
|
IFLA_XDP = 0x2b
|
||||||
|
IFLA_EVENT = 0x2c
|
||||||
|
IFLA_NEW_NETNSID = 0x2d
|
||||||
|
IFLA_IF_NETNSID = 0x2e
|
||||||
|
IFLA_TARGET_NETNSID = 0x2e
|
||||||
|
IFLA_CARRIER_UP_COUNT = 0x2f
|
||||||
|
IFLA_CARRIER_DOWN_COUNT = 0x30
|
||||||
|
IFLA_NEW_IFINDEX = 0x31
|
||||||
|
IFLA_MIN_MTU = 0x32
|
||||||
|
IFLA_MAX_MTU = 0x33
|
||||||
|
IFLA_PROP_LIST = 0x34
|
||||||
|
IFLA_ALT_IFNAME = 0x35
|
||||||
|
IFLA_PERM_ADDRESS = 0x36
|
||||||
|
IFLA_INET_UNSPEC = 0x0
|
||||||
|
IFLA_INET_CONF = 0x1
|
||||||
|
IFLA_INET6_UNSPEC = 0x0
|
||||||
|
IFLA_INET6_FLAGS = 0x1
|
||||||
|
IFLA_INET6_CONF = 0x2
|
||||||
|
IFLA_INET6_STATS = 0x3
|
||||||
|
IFLA_INET6_MCAST = 0x4
|
||||||
|
IFLA_INET6_CACHEINFO = 0x5
|
||||||
|
IFLA_INET6_ICMP6STATS = 0x6
|
||||||
|
IFLA_INET6_TOKEN = 0x7
|
||||||
|
IFLA_INET6_ADDR_GEN_MODE = 0x8
|
||||||
|
IFLA_BR_UNSPEC = 0x0
|
||||||
|
IFLA_BR_FORWARD_DELAY = 0x1
|
||||||
|
IFLA_BR_HELLO_TIME = 0x2
|
||||||
|
IFLA_BR_MAX_AGE = 0x3
|
||||||
|
IFLA_BR_AGEING_TIME = 0x4
|
||||||
|
IFLA_BR_STP_STATE = 0x5
|
||||||
|
IFLA_BR_PRIORITY = 0x6
|
||||||
|
IFLA_BR_VLAN_FILTERING = 0x7
|
||||||
|
IFLA_BR_VLAN_PROTOCOL = 0x8
|
||||||
|
IFLA_BR_GROUP_FWD_MASK = 0x9
|
||||||
|
IFLA_BR_ROOT_ID = 0xa
|
||||||
|
IFLA_BR_BRIDGE_ID = 0xb
|
||||||
|
IFLA_BR_ROOT_PORT = 0xc
|
||||||
|
IFLA_BR_ROOT_PATH_COST = 0xd
|
||||||
|
IFLA_BR_TOPOLOGY_CHANGE = 0xe
|
||||||
|
IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 0xf
|
||||||
|
IFLA_BR_HELLO_TIMER = 0x10
|
||||||
|
IFLA_BR_TCN_TIMER = 0x11
|
||||||
|
IFLA_BR_TOPOLOGY_CHANGE_TIMER = 0x12
|
||||||
|
IFLA_BR_GC_TIMER = 0x13
|
||||||
|
IFLA_BR_GROUP_ADDR = 0x14
|
||||||
|
IFLA_BR_FDB_FLUSH = 0x15
|
||||||
|
IFLA_BR_MCAST_ROUTER = 0x16
|
||||||
|
IFLA_BR_MCAST_SNOOPING = 0x17
|
||||||
|
IFLA_BR_MCAST_QUERY_USE_IFADDR = 0x18
|
||||||
|
IFLA_BR_MCAST_QUERIER = 0x19
|
||||||
|
IFLA_BR_MCAST_HASH_ELASTICITY = 0x1a
|
||||||
|
IFLA_BR_MCAST_HASH_MAX = 0x1b
|
||||||
|
IFLA_BR_MCAST_LAST_MEMBER_CNT = 0x1c
|
||||||
|
IFLA_BR_MCAST_STARTUP_QUERY_CNT = 0x1d
|
||||||
|
IFLA_BR_MCAST_LAST_MEMBER_INTVL = 0x1e
|
||||||
|
IFLA_BR_MCAST_MEMBERSHIP_INTVL = 0x1f
|
||||||
|
IFLA_BR_MCAST_QUERIER_INTVL = 0x20
|
||||||
|
IFLA_BR_MCAST_QUERY_INTVL = 0x21
|
||||||
|
IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 0x22
|
||||||
|
IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 0x23
|
||||||
|
IFLA_BR_NF_CALL_IPTABLES = 0x24
|
||||||
|
IFLA_BR_NF_CALL_IP6TABLES = 0x25
|
||||||
|
IFLA_BR_NF_CALL_ARPTABLES = 0x26
|
||||||
|
IFLA_BR_VLAN_DEFAULT_PVID = 0x27
|
||||||
|
IFLA_BR_PAD = 0x28
|
||||||
|
IFLA_BR_VLAN_STATS_ENABLED = 0x29
|
||||||
|
IFLA_BR_MCAST_STATS_ENABLED = 0x2a
|
||||||
|
IFLA_BR_MCAST_IGMP_VERSION = 0x2b
|
||||||
|
IFLA_BR_MCAST_MLD_VERSION = 0x2c
|
||||||
|
IFLA_BR_VLAN_STATS_PER_PORT = 0x2d
|
||||||
|
IFLA_BR_MULTI_BOOLOPT = 0x2e
|
||||||
|
IFLA_BRPORT_UNSPEC = 0x0
|
||||||
|
IFLA_BRPORT_STATE = 0x1
|
||||||
|
IFLA_BRPORT_PRIORITY = 0x2
|
||||||
|
IFLA_BRPORT_COST = 0x3
|
||||||
|
IFLA_BRPORT_MODE = 0x4
|
||||||
|
IFLA_BRPORT_GUARD = 0x5
|
||||||
|
IFLA_BRPORT_PROTECT = 0x6
|
||||||
|
IFLA_BRPORT_FAST_LEAVE = 0x7
|
||||||
|
IFLA_BRPORT_LEARNING = 0x8
|
||||||
|
IFLA_BRPORT_UNICAST_FLOOD = 0x9
|
||||||
|
IFLA_BRPORT_PROXYARP = 0xa
|
||||||
|
IFLA_BRPORT_LEARNING_SYNC = 0xb
|
||||||
|
IFLA_BRPORT_PROXYARP_WIFI = 0xc
|
||||||
|
IFLA_BRPORT_ROOT_ID = 0xd
|
||||||
|
IFLA_BRPORT_BRIDGE_ID = 0xe
|
||||||
|
IFLA_BRPORT_DESIGNATED_PORT = 0xf
|
||||||
|
IFLA_BRPORT_DESIGNATED_COST = 0x10
|
||||||
|
IFLA_BRPORT_ID = 0x11
|
||||||
|
IFLA_BRPORT_NO = 0x12
|
||||||
|
IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 0x13
|
||||||
|
IFLA_BRPORT_CONFIG_PENDING = 0x14
|
||||||
|
IFLA_BRPORT_MESSAGE_AGE_TIMER = 0x15
|
||||||
|
IFLA_BRPORT_FORWARD_DELAY_TIMER = 0x16
|
||||||
|
IFLA_BRPORT_HOLD_TIMER = 0x17
|
||||||
|
IFLA_BRPORT_FLUSH = 0x18
|
||||||
|
IFLA_BRPORT_MULTICAST_ROUTER = 0x19
|
||||||
|
IFLA_BRPORT_PAD = 0x1a
|
||||||
|
IFLA_BRPORT_MCAST_FLOOD = 0x1b
|
||||||
|
IFLA_BRPORT_MCAST_TO_UCAST = 0x1c
|
||||||
|
IFLA_BRPORT_VLAN_TUNNEL = 0x1d
|
||||||
|
IFLA_BRPORT_BCAST_FLOOD = 0x1e
|
||||||
|
IFLA_BRPORT_GROUP_FWD_MASK = 0x1f
|
||||||
|
IFLA_BRPORT_NEIGH_SUPPRESS = 0x20
|
||||||
|
IFLA_BRPORT_ISOLATED = 0x21
|
||||||
|
IFLA_BRPORT_BACKUP_PORT = 0x22
|
||||||
|
IFLA_BRPORT_MRP_RING_OPEN = 0x23
|
||||||
|
IFLA_INFO_UNSPEC = 0x0
|
||||||
|
IFLA_INFO_KIND = 0x1
|
||||||
|
IFLA_INFO_DATA = 0x2
|
||||||
|
IFLA_INFO_XSTATS = 0x3
|
||||||
|
IFLA_INFO_SLAVE_KIND = 0x4
|
||||||
|
IFLA_INFO_SLAVE_DATA = 0x5
|
||||||
|
IFLA_VLAN_UNSPEC = 0x0
|
||||||
|
IFLA_VLAN_ID = 0x1
|
||||||
|
IFLA_VLAN_FLAGS = 0x2
|
||||||
|
IFLA_VLAN_EGRESS_QOS = 0x3
|
||||||
|
IFLA_VLAN_INGRESS_QOS = 0x4
|
||||||
|
IFLA_VLAN_PROTOCOL = 0x5
|
||||||
|
IFLA_VLAN_QOS_UNSPEC = 0x0
|
||||||
|
IFLA_VLAN_QOS_MAPPING = 0x1
|
||||||
|
IFLA_MACVLAN_UNSPEC = 0x0
|
||||||
|
IFLA_MACVLAN_MODE = 0x1
|
||||||
|
IFLA_MACVLAN_FLAGS = 0x2
|
||||||
|
IFLA_MACVLAN_MACADDR_MODE = 0x3
|
||||||
|
IFLA_MACVLAN_MACADDR = 0x4
|
||||||
|
IFLA_MACVLAN_MACADDR_DATA = 0x5
|
||||||
|
IFLA_MACVLAN_MACADDR_COUNT = 0x6
|
||||||
|
IFLA_VRF_UNSPEC = 0x0
|
||||||
|
IFLA_VRF_TABLE = 0x1
|
||||||
|
IFLA_VRF_PORT_UNSPEC = 0x0
|
||||||
|
IFLA_VRF_PORT_TABLE = 0x1
|
||||||
|
IFLA_MACSEC_UNSPEC = 0x0
|
||||||
|
IFLA_MACSEC_SCI = 0x1
|
||||||
|
IFLA_MACSEC_PORT = 0x2
|
||||||
|
IFLA_MACSEC_ICV_LEN = 0x3
|
||||||
|
IFLA_MACSEC_CIPHER_SUITE = 0x4
|
||||||
|
IFLA_MACSEC_WINDOW = 0x5
|
||||||
|
IFLA_MACSEC_ENCODING_SA = 0x6
|
||||||
|
IFLA_MACSEC_ENCRYPT = 0x7
|
||||||
|
IFLA_MACSEC_PROTECT = 0x8
|
||||||
|
IFLA_MACSEC_INC_SCI = 0x9
|
||||||
|
IFLA_MACSEC_ES = 0xa
|
||||||
|
IFLA_MACSEC_SCB = 0xb
|
||||||
|
IFLA_MACSEC_REPLAY_PROTECT = 0xc
|
||||||
|
IFLA_MACSEC_VALIDATION = 0xd
|
||||||
|
IFLA_MACSEC_PAD = 0xe
|
||||||
|
IFLA_MACSEC_OFFLOAD = 0xf
|
||||||
|
IFLA_XFRM_UNSPEC = 0x0
|
||||||
|
IFLA_XFRM_LINK = 0x1
|
||||||
|
IFLA_XFRM_IF_ID = 0x2
|
||||||
|
IFLA_IPVLAN_UNSPEC = 0x0
|
||||||
|
IFLA_IPVLAN_MODE = 0x1
|
||||||
|
IFLA_IPVLAN_FLAGS = 0x2
|
||||||
|
IFLA_VXLAN_UNSPEC = 0x0
|
||||||
|
IFLA_VXLAN_ID = 0x1
|
||||||
|
IFLA_VXLAN_GROUP = 0x2
|
||||||
|
IFLA_VXLAN_LINK = 0x3
|
||||||
|
IFLA_VXLAN_LOCAL = 0x4
|
||||||
|
IFLA_VXLAN_TTL = 0x5
|
||||||
|
IFLA_VXLAN_TOS = 0x6
|
||||||
|
IFLA_VXLAN_LEARNING = 0x7
|
||||||
|
IFLA_VXLAN_AGEING = 0x8
|
||||||
|
IFLA_VXLAN_LIMIT = 0x9
|
||||||
|
IFLA_VXLAN_PORT_RANGE = 0xa
|
||||||
|
IFLA_VXLAN_PROXY = 0xb
|
||||||
|
IFLA_VXLAN_RSC = 0xc
|
||||||
|
IFLA_VXLAN_L2MISS = 0xd
|
||||||
|
IFLA_VXLAN_L3MISS = 0xe
|
||||||
|
IFLA_VXLAN_PORT = 0xf
|
||||||
|
IFLA_VXLAN_GROUP6 = 0x10
|
||||||
|
IFLA_VXLAN_LOCAL6 = 0x11
|
||||||
|
IFLA_VXLAN_UDP_CSUM = 0x12
|
||||||
|
IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 0x13
|
||||||
|
IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 0x14
|
||||||
|
IFLA_VXLAN_REMCSUM_TX = 0x15
|
||||||
|
IFLA_VXLAN_REMCSUM_RX = 0x16
|
||||||
|
IFLA_VXLAN_GBP = 0x17
|
||||||
|
IFLA_VXLAN_REMCSUM_NOPARTIAL = 0x18
|
||||||
|
IFLA_VXLAN_COLLECT_METADATA = 0x19
|
||||||
|
IFLA_VXLAN_LABEL = 0x1a
|
||||||
|
IFLA_VXLAN_GPE = 0x1b
|
||||||
|
IFLA_VXLAN_TTL_INHERIT = 0x1c
|
||||||
|
IFLA_VXLAN_DF = 0x1d
|
||||||
|
IFLA_GENEVE_UNSPEC = 0x0
|
||||||
|
IFLA_GENEVE_ID = 0x1
|
||||||
|
IFLA_GENEVE_REMOTE = 0x2
|
||||||
|
IFLA_GENEVE_TTL = 0x3
|
||||||
|
IFLA_GENEVE_TOS = 0x4
|
||||||
|
IFLA_GENEVE_PORT = 0x5
|
||||||
|
IFLA_GENEVE_COLLECT_METADATA = 0x6
|
||||||
|
IFLA_GENEVE_REMOTE6 = 0x7
|
||||||
|
IFLA_GENEVE_UDP_CSUM = 0x8
|
||||||
|
IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 0x9
|
||||||
|
IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 0xa
|
||||||
|
IFLA_GENEVE_LABEL = 0xb
|
||||||
|
IFLA_GENEVE_TTL_INHERIT = 0xc
|
||||||
|
IFLA_GENEVE_DF = 0xd
|
||||||
|
IFLA_BAREUDP_UNSPEC = 0x0
|
||||||
|
IFLA_BAREUDP_PORT = 0x1
|
||||||
|
IFLA_BAREUDP_ETHERTYPE = 0x2
|
||||||
|
IFLA_BAREUDP_SRCPORT_MIN = 0x3
|
||||||
|
IFLA_BAREUDP_MULTIPROTO_MODE = 0x4
|
||||||
|
IFLA_PPP_UNSPEC = 0x0
|
||||||
|
IFLA_PPP_DEV_FD = 0x1
|
||||||
|
IFLA_GTP_UNSPEC = 0x0
|
||||||
|
IFLA_GTP_FD0 = 0x1
|
||||||
|
IFLA_GTP_FD1 = 0x2
|
||||||
|
IFLA_GTP_PDP_HASHSIZE = 0x3
|
||||||
|
IFLA_GTP_ROLE = 0x4
|
||||||
|
IFLA_BOND_UNSPEC = 0x0
|
||||||
|
IFLA_BOND_MODE = 0x1
|
||||||
|
IFLA_BOND_ACTIVE_SLAVE = 0x2
|
||||||
|
IFLA_BOND_MIIMON = 0x3
|
||||||
|
IFLA_BOND_UPDELAY = 0x4
|
||||||
|
IFLA_BOND_DOWNDELAY = 0x5
|
||||||
|
IFLA_BOND_USE_CARRIER = 0x6
|
||||||
|
IFLA_BOND_ARP_INTERVAL = 0x7
|
||||||
|
IFLA_BOND_ARP_IP_TARGET = 0x8
|
||||||
|
IFLA_BOND_ARP_VALIDATE = 0x9
|
||||||
|
IFLA_BOND_ARP_ALL_TARGETS = 0xa
|
||||||
|
IFLA_BOND_PRIMARY = 0xb
|
||||||
|
IFLA_BOND_PRIMARY_RESELECT = 0xc
|
||||||
|
IFLA_BOND_FAIL_OVER_MAC = 0xd
|
||||||
|
IFLA_BOND_XMIT_HASH_POLICY = 0xe
|
||||||
|
IFLA_BOND_RESEND_IGMP = 0xf
|
||||||
|
IFLA_BOND_NUM_PEER_NOTIF = 0x10
|
||||||
|
IFLA_BOND_ALL_SLAVES_ACTIVE = 0x11
|
||||||
|
IFLA_BOND_MIN_LINKS = 0x12
|
||||||
|
IFLA_BOND_LP_INTERVAL = 0x13
|
||||||
|
IFLA_BOND_PACKETS_PER_SLAVE = 0x14
|
||||||
|
IFLA_BOND_AD_LACP_RATE = 0x15
|
||||||
|
IFLA_BOND_AD_SELECT = 0x16
|
||||||
|
IFLA_BOND_AD_INFO = 0x17
|
||||||
|
IFLA_BOND_AD_ACTOR_SYS_PRIO = 0x18
|
||||||
|
IFLA_BOND_AD_USER_PORT_KEY = 0x19
|
||||||
|
IFLA_BOND_AD_ACTOR_SYSTEM = 0x1a
|
||||||
|
IFLA_BOND_TLB_DYNAMIC_LB = 0x1b
|
||||||
|
IFLA_BOND_PEER_NOTIF_DELAY = 0x1c
|
||||||
|
IFLA_BOND_AD_INFO_UNSPEC = 0x0
|
||||||
|
IFLA_BOND_AD_INFO_AGGREGATOR = 0x1
|
||||||
|
IFLA_BOND_AD_INFO_NUM_PORTS = 0x2
|
||||||
|
IFLA_BOND_AD_INFO_ACTOR_KEY = 0x3
|
||||||
|
IFLA_BOND_AD_INFO_PARTNER_KEY = 0x4
|
||||||
|
IFLA_BOND_AD_INFO_PARTNER_MAC = 0x5
|
||||||
|
IFLA_BOND_SLAVE_UNSPEC = 0x0
|
||||||
|
IFLA_BOND_SLAVE_STATE = 0x1
|
||||||
|
IFLA_BOND_SLAVE_MII_STATUS = 0x2
|
||||||
|
IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 0x3
|
||||||
|
IFLA_BOND_SLAVE_PERM_HWADDR = 0x4
|
||||||
|
IFLA_BOND_SLAVE_QUEUE_ID = 0x5
|
||||||
|
IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 0x6
|
||||||
|
IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 0x7
|
||||||
|
IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8
|
||||||
|
IFLA_VF_INFO_UNSPEC = 0x0
|
||||||
|
IFLA_VF_INFO = 0x1
|
||||||
|
IFLA_VF_UNSPEC = 0x0
|
||||||
|
IFLA_VF_MAC = 0x1
|
||||||
|
IFLA_VF_VLAN = 0x2
|
||||||
|
IFLA_VF_TX_RATE = 0x3
|
||||||
|
IFLA_VF_SPOOFCHK = 0x4
|
||||||
|
IFLA_VF_LINK_STATE = 0x5
|
||||||
|
IFLA_VF_RATE = 0x6
|
||||||
|
IFLA_VF_RSS_QUERY_EN = 0x7
|
||||||
|
IFLA_VF_STATS = 0x8
|
||||||
|
IFLA_VF_TRUST = 0x9
|
||||||
|
IFLA_VF_IB_NODE_GUID = 0xa
|
||||||
|
IFLA_VF_IB_PORT_GUID = 0xb
|
||||||
|
IFLA_VF_VLAN_LIST = 0xc
|
||||||
|
IFLA_VF_BROADCAST = 0xd
|
||||||
|
IFLA_VF_VLAN_INFO_UNSPEC = 0x0
|
||||||
|
IFLA_VF_VLAN_INFO = 0x1
|
||||||
|
IFLA_VF_LINK_STATE_AUTO = 0x0
|
||||||
|
IFLA_VF_LINK_STATE_ENABLE = 0x1
|
||||||
|
IFLA_VF_LINK_STATE_DISABLE = 0x2
|
||||||
|
IFLA_VF_STATS_RX_PACKETS = 0x0
|
||||||
|
IFLA_VF_STATS_TX_PACKETS = 0x1
|
||||||
|
IFLA_VF_STATS_RX_BYTES = 0x2
|
||||||
|
IFLA_VF_STATS_TX_BYTES = 0x3
|
||||||
|
IFLA_VF_STATS_BROADCAST = 0x4
|
||||||
|
IFLA_VF_STATS_MULTICAST = 0x5
|
||||||
|
IFLA_VF_STATS_PAD = 0x6
|
||||||
|
IFLA_VF_STATS_RX_DROPPED = 0x7
|
||||||
|
IFLA_VF_STATS_TX_DROPPED = 0x8
|
||||||
|
IFLA_VF_PORT_UNSPEC = 0x0
|
||||||
|
IFLA_VF_PORT = 0x1
|
||||||
|
IFLA_PORT_UNSPEC = 0x0
|
||||||
|
IFLA_PORT_VF = 0x1
|
||||||
|
IFLA_PORT_PROFILE = 0x2
|
||||||
|
IFLA_PORT_VSI_TYPE = 0x3
|
||||||
|
IFLA_PORT_INSTANCE_UUID = 0x4
|
||||||
|
IFLA_PORT_HOST_UUID = 0x5
|
||||||
|
IFLA_PORT_REQUEST = 0x6
|
||||||
|
IFLA_PORT_RESPONSE = 0x7
|
||||||
|
IFLA_IPOIB_UNSPEC = 0x0
|
||||||
|
IFLA_IPOIB_PKEY = 0x1
|
||||||
|
IFLA_IPOIB_MODE = 0x2
|
||||||
|
IFLA_IPOIB_UMCAST = 0x3
|
||||||
|
IFLA_HSR_UNSPEC = 0x0
|
||||||
|
IFLA_HSR_SLAVE1 = 0x1
|
||||||
|
IFLA_HSR_SLAVE2 = 0x2
|
||||||
|
IFLA_HSR_MULTICAST_SPEC = 0x3
|
||||||
|
IFLA_HSR_SUPERVISION_ADDR = 0x4
|
||||||
|
IFLA_HSR_SEQ_NR = 0x5
|
||||||
|
IFLA_HSR_VERSION = 0x6
|
||||||
|
IFLA_STATS_UNSPEC = 0x0
|
||||||
|
IFLA_STATS_LINK_64 = 0x1
|
||||||
|
IFLA_STATS_LINK_XSTATS = 0x2
|
||||||
|
IFLA_STATS_LINK_XSTATS_SLAVE = 0x3
|
||||||
|
IFLA_STATS_LINK_OFFLOAD_XSTATS = 0x4
|
||||||
|
IFLA_STATS_AF_SPEC = 0x5
|
||||||
|
IFLA_OFFLOAD_XSTATS_UNSPEC = 0x0
|
||||||
|
IFLA_OFFLOAD_XSTATS_CPU_HIT = 0x1
|
||||||
|
IFLA_XDP_UNSPEC = 0x0
|
||||||
|
IFLA_XDP_FD = 0x1
|
||||||
|
IFLA_XDP_ATTACHED = 0x2
|
||||||
|
IFLA_XDP_FLAGS = 0x3
|
||||||
|
IFLA_XDP_PROG_ID = 0x4
|
||||||
|
IFLA_XDP_DRV_PROG_ID = 0x5
|
||||||
|
IFLA_XDP_SKB_PROG_ID = 0x6
|
||||||
|
IFLA_XDP_HW_PROG_ID = 0x7
|
||||||
|
IFLA_XDP_EXPECTED_FD = 0x8
|
||||||
|
IFLA_EVENT_NONE = 0x0
|
||||||
|
IFLA_EVENT_REBOOT = 0x1
|
||||||
|
IFLA_EVENT_FEATURES = 0x2
|
||||||
|
IFLA_EVENT_BONDING_FAILOVER = 0x3
|
||||||
|
IFLA_EVENT_NOTIFY_PEERS = 0x4
|
||||||
|
IFLA_EVENT_IGMP_RESEND = 0x5
|
||||||
|
IFLA_EVENT_BONDING_OPTIONS = 0x6
|
||||||
|
IFLA_TUN_UNSPEC = 0x0
|
||||||
|
IFLA_TUN_OWNER = 0x1
|
||||||
|
IFLA_TUN_GROUP = 0x2
|
||||||
|
IFLA_TUN_TYPE = 0x3
|
||||||
|
IFLA_TUN_PI = 0x4
|
||||||
|
IFLA_TUN_VNET_HDR = 0x5
|
||||||
|
IFLA_TUN_PERSIST = 0x6
|
||||||
|
IFLA_TUN_MULTI_QUEUE = 0x7
|
||||||
|
IFLA_TUN_NUM_QUEUES = 0x8
|
||||||
|
IFLA_TUN_NUM_DISABLED_QUEUES = 0x9
|
||||||
|
IFLA_RMNET_UNSPEC = 0x0
|
||||||
|
IFLA_RMNET_MUX_ID = 0x1
|
||||||
|
IFLA_RMNET_FLAGS = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
NF_INET_PRE_ROUTING = 0x0
|
NF_INET_PRE_ROUTING = 0x0
|
||||||
NF_INET_LOCAL_IN = 0x1
|
NF_INET_LOCAL_IN = 0x1
|
||||||
|
@ -2638,3 +2963,21 @@ type WatchdogInfo struct {
|
||||||
Version uint32
|
Version uint32
|
||||||
Identity [32]uint8
|
Identity [32]uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSFData struct {
|
||||||
|
Info PPSKInfo
|
||||||
|
Timeout PPSKTime
|
||||||
|
}
|
||||||
|
|
||||||
|
type PPSKParams struct {
|
||||||
|
Api_version int32
|
||||||
|
Mode int32
|
||||||
|
Assert_off_tu PPSKTime
|
||||||
|
Clear_off_tu PPSKTime
|
||||||
|
}
|
||||||
|
|
||||||
|
type PPSKTime struct {
|
||||||
|
Sec int64
|
||||||
|
Nsec int32
|
||||||
|
Flags uint32
|
||||||
|
}
|
||||||
|
|
|
@ -602,3 +602,18 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800470a1
|
||||||
|
PPS_SETPARAMS = 0x400470a2
|
||||||
|
PPS_GETCAP = 0x800470a3
|
||||||
|
PPS_FETCH = 0xc00470a4
|
||||||
|
)
|
||||||
|
|
|
@ -619,3 +619,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800870a1
|
||||||
|
PPS_SETPARAMS = 0x400870a2
|
||||||
|
PPS_GETCAP = 0x800870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -596,3 +596,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]uint8
|
Id [16]uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800470a1
|
||||||
|
PPS_SETPARAMS = 0x400470a2
|
||||||
|
PPS_GETCAP = 0x800470a3
|
||||||
|
PPS_FETCH = 0xc00470a4
|
||||||
|
)
|
||||||
|
|
|
@ -598,3 +598,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800870a1
|
||||||
|
PPS_SETPARAMS = 0x400870a2
|
||||||
|
PPS_GETCAP = 0x800870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -602,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400470a1
|
||||||
|
PPS_SETPARAMS = 0x800470a2
|
||||||
|
PPS_GETCAP = 0x400470a3
|
||||||
|
PPS_FETCH = 0xc00470a4
|
||||||
|
)
|
||||||
|
|
|
@ -601,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400870a1
|
||||||
|
PPS_SETPARAMS = 0x800870a2
|
||||||
|
PPS_GETCAP = 0x400870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -601,3 +601,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400870a1
|
||||||
|
PPS_SETPARAMS = 0x800870a2
|
||||||
|
PPS_GETCAP = 0x400870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -602,3 +602,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400470a1
|
||||||
|
PPS_SETPARAMS = 0x800470a2
|
||||||
|
PPS_GETCAP = 0x400470a3
|
||||||
|
PPS_FETCH = 0xc00470a4
|
||||||
|
)
|
||||||
|
|
|
@ -608,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]uint8
|
Id [16]uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400870a1
|
||||||
|
PPS_SETPARAMS = 0x800870a2
|
||||||
|
PPS_GETCAP = 0x400870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -608,3 +608,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]uint8
|
Id [16]uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400870a1
|
||||||
|
PPS_SETPARAMS = 0x800870a2
|
||||||
|
PPS_GETCAP = 0x400870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -626,3 +626,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]uint8
|
Id [16]uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800870a1
|
||||||
|
PPS_SETPARAMS = 0x400870a2
|
||||||
|
PPS_GETCAP = 0x800870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -622,3 +622,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x800870a1
|
||||||
|
PPS_SETPARAMS = 0x400870a2
|
||||||
|
PPS_GETCAP = 0x800870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -603,3 +603,19 @@ type TIPCSIOCNodeIDReq struct {
|
||||||
Peer uint32
|
Peer uint32
|
||||||
Id [16]int8
|
Id [16]int8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PPSKInfo struct {
|
||||||
|
Assert_sequence uint32
|
||||||
|
Clear_sequence uint32
|
||||||
|
Assert_tu PPSKTime
|
||||||
|
Clear_tu PPSKTime
|
||||||
|
Current_mode int32
|
||||||
|
_ [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
PPS_GETPARAMS = 0x400870a1
|
||||||
|
PPS_SETPARAMS = 0x800870a2
|
||||||
|
PPS_GETCAP = 0x400870a3
|
||||||
|
PPS_FETCH = 0xc00870a4
|
||||||
|
)
|
||||||
|
|
|
@ -16,13 +16,19 @@ const (
|
||||||
MEM_RESET_UNDO = 0x01000000
|
MEM_RESET_UNDO = 0x01000000
|
||||||
MEM_LARGE_PAGES = 0x20000000
|
MEM_LARGE_PAGES = 0x20000000
|
||||||
|
|
||||||
PAGE_NOACCESS = 0x01
|
PAGE_NOACCESS = 0x00000001
|
||||||
PAGE_READONLY = 0x02
|
PAGE_READONLY = 0x00000002
|
||||||
PAGE_READWRITE = 0x04
|
PAGE_READWRITE = 0x00000004
|
||||||
PAGE_WRITECOPY = 0x08
|
PAGE_WRITECOPY = 0x00000008
|
||||||
PAGE_EXECUTE_READ = 0x20
|
PAGE_EXECUTE = 0x00000010
|
||||||
PAGE_EXECUTE_READWRITE = 0x40
|
PAGE_EXECUTE_READ = 0x00000020
|
||||||
PAGE_EXECUTE_WRITECOPY = 0x80
|
PAGE_EXECUTE_READWRITE = 0x00000040
|
||||||
|
PAGE_EXECUTE_WRITECOPY = 0x00000080
|
||||||
|
PAGE_GUARD = 0x00000100
|
||||||
|
PAGE_NOCACHE = 0x00000200
|
||||||
|
PAGE_WRITECOMBINE = 0x00000400
|
||||||
|
PAGE_TARGETS_INVALID = 0x40000000
|
||||||
|
PAGE_TARGETS_NO_UPDATE = 0x40000000
|
||||||
|
|
||||||
QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002
|
QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002
|
||||||
QUOTA_LIMITS_HARDWS_MIN_ENABLE = 0x00000001
|
QUOTA_LIMITS_HARDWS_MIN_ENABLE = 0x00000001
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
package windows
|
||||||
|
|
||||||
|
import "syscall"
|
||||||
|
|
||||||
|
const (
|
||||||
|
ERROR_EXPECTED_SECTION_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0
|
||||||
|
ERROR_BAD_SECTION_NAME_LINE syscall.Errno = 0x20000000 | 0xC0000000 | 1
|
||||||
|
ERROR_SECTION_NAME_TOO_LONG syscall.Errno = 0x20000000 | 0xC0000000 | 2
|
||||||
|
ERROR_GENERAL_SYNTAX syscall.Errno = 0x20000000 | 0xC0000000 | 3
|
||||||
|
ERROR_WRONG_INF_STYLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x100
|
||||||
|
ERROR_SECTION_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x101
|
||||||
|
ERROR_LINE_NOT_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x102
|
||||||
|
ERROR_NO_BACKUP syscall.Errno = 0x20000000 | 0xC0000000 | 0x103
|
||||||
|
ERROR_NO_ASSOCIATED_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x200
|
||||||
|
ERROR_CLASS_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x201
|
||||||
|
ERROR_DUPLICATE_FOUND syscall.Errno = 0x20000000 | 0xC0000000 | 0x202
|
||||||
|
ERROR_NO_DRIVER_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x203
|
||||||
|
ERROR_KEY_DOES_NOT_EXIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x204
|
||||||
|
ERROR_INVALID_DEVINST_NAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x205
|
||||||
|
ERROR_INVALID_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x206
|
||||||
|
ERROR_DEVINST_ALREADY_EXISTS syscall.Errno = 0x20000000 | 0xC0000000 | 0x207
|
||||||
|
ERROR_DEVINFO_NOT_REGISTERED syscall.Errno = 0x20000000 | 0xC0000000 | 0x208
|
||||||
|
ERROR_INVALID_REG_PROPERTY syscall.Errno = 0x20000000 | 0xC0000000 | 0x209
|
||||||
|
ERROR_NO_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x20A
|
||||||
|
ERROR_NO_SUCH_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x20B
|
||||||
|
ERROR_CANT_LOAD_CLASS_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x20C
|
||||||
|
ERROR_INVALID_CLASS_INSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x20D
|
||||||
|
ERROR_DI_DO_DEFAULT syscall.Errno = 0x20000000 | 0xC0000000 | 0x20E
|
||||||
|
ERROR_DI_NOFILECOPY syscall.Errno = 0x20000000 | 0xC0000000 | 0x20F
|
||||||
|
ERROR_INVALID_HWPROFILE syscall.Errno = 0x20000000 | 0xC0000000 | 0x210
|
||||||
|
ERROR_NO_DEVICE_SELECTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x211
|
||||||
|
ERROR_DEVINFO_LIST_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x212
|
||||||
|
ERROR_DEVINFO_DATA_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x213
|
||||||
|
ERROR_DI_BAD_PATH syscall.Errno = 0x20000000 | 0xC0000000 | 0x214
|
||||||
|
ERROR_NO_CLASSINSTALL_PARAMS syscall.Errno = 0x20000000 | 0xC0000000 | 0x215
|
||||||
|
ERROR_FILEQUEUE_LOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x216
|
||||||
|
ERROR_BAD_SERVICE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x217
|
||||||
|
ERROR_NO_CLASS_DRIVER_LIST syscall.Errno = 0x20000000 | 0xC0000000 | 0x218
|
||||||
|
ERROR_NO_ASSOCIATED_SERVICE syscall.Errno = 0x20000000 | 0xC0000000 | 0x219
|
||||||
|
ERROR_NO_DEFAULT_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21A
|
||||||
|
ERROR_DEVICE_INTERFACE_ACTIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x21B
|
||||||
|
ERROR_DEVICE_INTERFACE_REMOVED syscall.Errno = 0x20000000 | 0xC0000000 | 0x21C
|
||||||
|
ERROR_BAD_INTERFACE_INSTALLSECT syscall.Errno = 0x20000000 | 0xC0000000 | 0x21D
|
||||||
|
ERROR_NO_SUCH_INTERFACE_CLASS syscall.Errno = 0x20000000 | 0xC0000000 | 0x21E
|
||||||
|
ERROR_INVALID_REFERENCE_STRING syscall.Errno = 0x20000000 | 0xC0000000 | 0x21F
|
||||||
|
ERROR_INVALID_MACHINENAME syscall.Errno = 0x20000000 | 0xC0000000 | 0x220
|
||||||
|
ERROR_REMOTE_COMM_FAILURE syscall.Errno = 0x20000000 | 0xC0000000 | 0x221
|
||||||
|
ERROR_MACHINE_UNAVAILABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x222
|
||||||
|
ERROR_NO_CONFIGMGR_SERVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x223
|
||||||
|
ERROR_INVALID_PROPPAGE_PROVIDER syscall.Errno = 0x20000000 | 0xC0000000 | 0x224
|
||||||
|
ERROR_NO_SUCH_DEVICE_INTERFACE syscall.Errno = 0x20000000 | 0xC0000000 | 0x225
|
||||||
|
ERROR_DI_POSTPROCESSING_REQUIRED syscall.Errno = 0x20000000 | 0xC0000000 | 0x226
|
||||||
|
ERROR_INVALID_COINSTALLER syscall.Errno = 0x20000000 | 0xC0000000 | 0x227
|
||||||
|
ERROR_NO_COMPAT_DRIVERS syscall.Errno = 0x20000000 | 0xC0000000 | 0x228
|
||||||
|
ERROR_NO_DEVICE_ICON syscall.Errno = 0x20000000 | 0xC0000000 | 0x229
|
||||||
|
ERROR_INVALID_INF_LOGCONFIG syscall.Errno = 0x20000000 | 0xC0000000 | 0x22A
|
||||||
|
ERROR_DI_DONT_INSTALL syscall.Errno = 0x20000000 | 0xC0000000 | 0x22B
|
||||||
|
ERROR_INVALID_FILTER_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22C
|
||||||
|
ERROR_NON_WINDOWS_NT_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22D
|
||||||
|
ERROR_NON_WINDOWS_DRIVER syscall.Errno = 0x20000000 | 0xC0000000 | 0x22E
|
||||||
|
ERROR_NO_CATALOG_FOR_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x22F
|
||||||
|
ERROR_DEVINSTALL_QUEUE_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x230
|
||||||
|
ERROR_NOT_DISABLEABLE syscall.Errno = 0x20000000 | 0xC0000000 | 0x231
|
||||||
|
ERROR_CANT_REMOVE_DEVINST syscall.Errno = 0x20000000 | 0xC0000000 | 0x232
|
||||||
|
ERROR_INVALID_TARGET syscall.Errno = 0x20000000 | 0xC0000000 | 0x233
|
||||||
|
ERROR_DRIVER_NONNATIVE syscall.Errno = 0x20000000 | 0xC0000000 | 0x234
|
||||||
|
ERROR_IN_WOW64 syscall.Errno = 0x20000000 | 0xC0000000 | 0x235
|
||||||
|
ERROR_SET_SYSTEM_RESTORE_POINT syscall.Errno = 0x20000000 | 0xC0000000 | 0x236
|
||||||
|
ERROR_SCE_DISABLED syscall.Errno = 0x20000000 | 0xC0000000 | 0x238
|
||||||
|
ERROR_UNKNOWN_EXCEPTION syscall.Errno = 0x20000000 | 0xC0000000 | 0x239
|
||||||
|
ERROR_PNP_REGISTRY_ERROR syscall.Errno = 0x20000000 | 0xC0000000 | 0x23A
|
||||||
|
ERROR_REMOTE_REQUEST_UNSUPPORTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x23B
|
||||||
|
ERROR_NOT_AN_INSTALLED_OEM_INF syscall.Errno = 0x20000000 | 0xC0000000 | 0x23C
|
||||||
|
ERROR_INF_IN_USE_BY_DEVICES syscall.Errno = 0x20000000 | 0xC0000000 | 0x23D
|
||||||
|
ERROR_DI_FUNCTION_OBSOLETE syscall.Errno = 0x20000000 | 0xC0000000 | 0x23E
|
||||||
|
ERROR_NO_AUTHENTICODE_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x23F
|
||||||
|
ERROR_AUTHENTICODE_DISALLOWED syscall.Errno = 0x20000000 | 0xC0000000 | 0x240
|
||||||
|
ERROR_AUTHENTICODE_TRUSTED_PUBLISHER syscall.Errno = 0x20000000 | 0xC0000000 | 0x241
|
||||||
|
ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED syscall.Errno = 0x20000000 | 0xC0000000 | 0x242
|
||||||
|
ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED syscall.Errno = 0x20000000 | 0xC0000000 | 0x243
|
||||||
|
ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH syscall.Errno = 0x20000000 | 0xC0000000 | 0x244
|
||||||
|
ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE syscall.Errno = 0x20000000 | 0xC0000000 | 0x245
|
||||||
|
ERROR_DEVICE_INSTALLER_NOT_READY syscall.Errno = 0x20000000 | 0xC0000000 | 0x246
|
||||||
|
ERROR_DRIVER_STORE_ADD_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x247
|
||||||
|
ERROR_DEVICE_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x248
|
||||||
|
ERROR_DRIVER_INSTALL_BLOCKED syscall.Errno = 0x20000000 | 0xC0000000 | 0x249
|
||||||
|
ERROR_WRONG_INF_TYPE syscall.Errno = 0x20000000 | 0xC0000000 | 0x24A
|
||||||
|
ERROR_FILE_HASH_NOT_IN_CATALOG syscall.Errno = 0x20000000 | 0xC0000000 | 0x24B
|
||||||
|
ERROR_DRIVER_STORE_DELETE_FAILED syscall.Errno = 0x20000000 | 0xC0000000 | 0x24C
|
||||||
|
ERROR_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = 0x20000000 | 0xC0000000 | 0x300
|
||||||
|
EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW
|
||||||
|
ERROR_NO_DEFAULT_INTERFACE_DEVICE syscall.Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE
|
||||||
|
ERROR_INTERFACE_DEVICE_ACTIVE syscall.Errno = ERROR_DEVICE_INTERFACE_ACTIVE
|
||||||
|
ERROR_INTERFACE_DEVICE_REMOVED syscall.Errno = ERROR_DEVICE_INTERFACE_REMOVED
|
||||||
|
ERROR_NO_SUCH_INTERFACE_DEVICE syscall.Errno = ERROR_NO_SUCH_DEVICE_INTERFACE
|
||||||
|
)
|
|
@ -25,17 +25,20 @@
|
||||||
package windows // import "golang.org/x/sys/windows"
|
package windows // import "golang.org/x/sys/windows"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
// ByteSliceFromString returns a NUL-terminated slice of bytes
|
||||||
// containing the text of s. If s contains a NUL byte at any
|
// containing the text of s. If s contains a NUL byte at any
|
||||||
// location, it returns (nil, syscall.EINVAL).
|
// location, it returns (nil, syscall.EINVAL).
|
||||||
func ByteSliceFromString(s string) ([]byte, error) {
|
func ByteSliceFromString(s string) ([]byte, error) {
|
||||||
for i := 0; i < len(s); i++ {
|
if strings.IndexByte(s, 0) != -1 {
|
||||||
if s[i] == 0 {
|
return nil, syscall.EINVAL
|
||||||
return nil, syscall.EINVAL
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
a := make([]byte, len(s)+1)
|
a := make([]byte, len(s)+1)
|
||||||
copy(a, s)
|
copy(a, s)
|
||||||
|
@ -53,6 +56,41 @@ func BytePtrFromString(s string) (*byte, error) {
|
||||||
return &a[0], nil
|
return &a[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
|
||||||
|
// bytes after the NUL removed.
|
||||||
|
func ByteSliceToString(s []byte) string {
|
||||||
|
if i := bytes.IndexByte(s, 0); i != -1 {
|
||||||
|
s = s[:i]
|
||||||
|
}
|
||||||
|
return string(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
|
||||||
|
// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
|
||||||
|
// at a zero byte; if the zero byte is not present, the program may crash.
|
||||||
|
func BytePtrToString(p *byte) string {
|
||||||
|
if p == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if *p == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find NUL terminator.
|
||||||
|
n := 0
|
||||||
|
for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
|
||||||
|
ptr = unsafe.Pointer(uintptr(ptr) + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var s []byte
|
||||||
|
h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
||||||
|
h.Data = unsafe.Pointer(p)
|
||||||
|
h.Len = n
|
||||||
|
h.Cap = n
|
||||||
|
|
||||||
|
return string(s)
|
||||||
|
}
|
||||||
|
|
||||||
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
// Single-word zero for use when we need a valid pointer to 0 bytes.
|
||||||
// See mksyscall.pl.
|
// See mksyscall.pl.
|
||||||
var _zero uintptr
|
var _zero uintptr
|
||||||
|
|
|
@ -92,11 +92,11 @@ func UTF16FromString(s string) ([]uint16, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
||||||
// with a terminating NUL removed.
|
// with a terminating NUL and any bytes after the NUL removed.
|
||||||
func UTF16ToString(s []uint16) string {
|
func UTF16ToString(s []uint16) string {
|
||||||
for i, v := range s {
|
for i, v := range s {
|
||||||
if v == 0 {
|
if v == 0 {
|
||||||
s = s[0:i]
|
s = s[:i]
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ func UTF16PtrFromString(s string) (*uint16, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.
|
// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.
|
||||||
// If the pointer is nil, this returns the empty string. This assumes that the UTF-16 sequence is terminated
|
// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated
|
||||||
// at a zero word; if the zero word is not present, the program may crash.
|
// at a zero word; if the zero word is not present, the program may crash.
|
||||||
func UTF16PtrToString(p *uint16) string {
|
func UTF16PtrToString(p *uint16) string {
|
||||||
if p == nil {
|
if p == nil {
|
||||||
|
@ -259,6 +259,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
||||||
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
||||||
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
||||||
|
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
||||||
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
||||||
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
||||||
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
||||||
|
@ -274,7 +275,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
|
//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
|
||||||
//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode
|
//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode
|
||||||
//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo
|
//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo
|
||||||
//sys SetConsoleCursorPosition(console Handle, position Coord) (err error) = kernel32.SetConsoleCursorPosition
|
//sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition
|
||||||
//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
|
//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
|
||||||
//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
|
//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
|
||||||
//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
|
//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
|
||||||
|
@ -350,6 +351,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages
|
//sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages
|
||||||
//sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages
|
//sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages
|
||||||
//sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages
|
//sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages
|
||||||
|
//sys GetFinalPathNameByHandleW(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW
|
||||||
|
|
||||||
// Process Status API (PSAPI)
|
// Process Status API (PSAPI)
|
||||||
//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
|
//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
|
||||||
|
@ -1478,3 +1480,7 @@ func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf
|
||||||
return languages, nil
|
return languages, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetConsoleCursorPosition(console Handle, position Coord) error {
|
||||||
|
return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ const (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
|
errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
|
||||||
|
errERROR_EINVAL error = syscall.EINVAL
|
||||||
)
|
)
|
||||||
|
|
||||||
// errnoErr returns common boxed Errno values, to prevent
|
// errnoErr returns common boxed Errno values, to prevent
|
||||||
|
@ -24,7 +25,7 @@ var (
|
||||||
func errnoErr(e syscall.Errno) error {
|
func errnoErr(e syscall.Errno) error {
|
||||||
switch e {
|
switch e {
|
||||||
case 0:
|
case 0:
|
||||||
return syscall.EINVAL
|
return errERROR_EINVAL
|
||||||
case errnoERROR_IO_PENDING:
|
case errnoERROR_IO_PENDING:
|
||||||
return errERROR_IO_PENDING
|
return errERROR_IO_PENDING
|
||||||
}
|
}
|
||||||
|
@ -137,6 +138,7 @@ var (
|
||||||
procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore")
|
procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore")
|
||||||
procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
|
procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
|
||||||
procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext")
|
procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext")
|
||||||
|
procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
|
||||||
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
||||||
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
||||||
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
||||||
|
@ -208,6 +210,7 @@ var (
|
||||||
procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle")
|
procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle")
|
||||||
procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
|
procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
|
||||||
procGetFileType = modkernel32.NewProc("GetFileType")
|
procGetFileType = modkernel32.NewProc("GetFileType")
|
||||||
|
procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW")
|
||||||
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
||||||
procGetLastError = modkernel32.NewProc("GetLastError")
|
procGetLastError = modkernel32.NewProc("GetLastError")
|
||||||
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
||||||
|
@ -1123,6 +1126,14 @@ func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, en
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CertDeleteCertificateFromStore(certContext *CertContext) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
|
func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
|
r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
|
||||||
context = (*CertContext)(unsafe.Pointer(r0))
|
context = (*CertContext)(unsafe.Pointer(r0))
|
||||||
|
@ -1716,6 +1727,15 @@ func GetFileType(filehandle Handle) (n uint32, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetFinalPathNameByHandleW(file syscall.Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)
|
||||||
|
n = uint32(r0)
|
||||||
|
if n == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
|
func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
|
||||||
r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
|
r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
|
||||||
n = uint32(r0)
|
n = uint32(r0)
|
||||||
|
@ -2296,8 +2316,8 @@ func ResumeThread(thread Handle) (ret uint32, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetConsoleCursorPosition(console Handle, position Coord) (err error) {
|
func setConsoleCursorPosition(console Handle, position uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(*((*uint32)(unsafe.Pointer(&position)))), 0)
|
r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
|
|
|
@ -802,16 +802,16 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
||||||
0x03a0010b, 0x03a00115, 0x03a00117, 0x03a0011c,
|
0x03a0010b, 0x03a00115, 0x03a00117, 0x03a0011c,
|
||||||
0x03a00120, 0x03a00128, 0x03a0015e, 0x04000000,
|
0x03a00120, 0x03a00128, 0x03a0015e, 0x04000000,
|
||||||
0x04300000, 0x04300099, 0x04400000, 0x0440012f,
|
0x04300000, 0x04300099, 0x04400000, 0x0440012f,
|
||||||
0x04800000, 0x0480006e, 0x05800000, 0x0581f000,
|
0x04800000, 0x0480006e, 0x05800000, 0x05820000,
|
||||||
0x0581f032, 0x05857000, 0x05857032, 0x05e00000,
|
0x05820032, 0x0585a000, 0x0585a032, 0x05e00000,
|
||||||
0x05e00052, 0x07100000, 0x07100047, 0x07500000,
|
0x05e00052, 0x07100000, 0x07100047, 0x07500000,
|
||||||
0x07500162, 0x07900000, 0x0790012f, 0x07e00000,
|
0x07500162, 0x07900000, 0x0790012f, 0x07e00000,
|
||||||
0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c3,
|
0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c3,
|
||||||
// Entry 40 - 5F
|
// Entry 40 - 5F
|
||||||
0x0a500000, 0x0a500035, 0x0a500099, 0x0a900000,
|
0x0a500000, 0x0a500035, 0x0a500099, 0x0a900000,
|
||||||
0x0a900053, 0x0a900099, 0x0b200000, 0x0b200078,
|
0x0a900053, 0x0a900099, 0x0b200000, 0x0b200078,
|
||||||
0x0b500000, 0x0b500099, 0x0b700000, 0x0b71f000,
|
0x0b500000, 0x0b500099, 0x0b700000, 0x0b720000,
|
||||||
0x0b71f033, 0x0b757000, 0x0b757033, 0x0d700000,
|
0x0b720033, 0x0b75a000, 0x0b75a033, 0x0d700000,
|
||||||
0x0d700022, 0x0d70006e, 0x0d700078, 0x0d70009e,
|
0x0d700022, 0x0d70006e, 0x0d700078, 0x0d70009e,
|
||||||
0x0db00000, 0x0db00035, 0x0db00099, 0x0dc00000,
|
0x0db00000, 0x0db00035, 0x0db00099, 0x0dc00000,
|
||||||
0x0dc00106, 0x0df00000, 0x0df00131, 0x0e500000,
|
0x0dc00106, 0x0df00000, 0x0df00131, 0x0e500000,
|
||||||
|
@ -947,7 +947,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
||||||
0x38900000, 0x38900131, 0x39000000, 0x3900006f,
|
0x38900000, 0x38900131, 0x39000000, 0x3900006f,
|
||||||
0x390000a4, 0x39500000, 0x39500099, 0x39800000,
|
0x390000a4, 0x39500000, 0x39500099, 0x39800000,
|
||||||
0x3980007d, 0x39800106, 0x39d00000, 0x39d05000,
|
0x3980007d, 0x39800106, 0x39d00000, 0x39d05000,
|
||||||
0x39d050e8, 0x39d33000, 0x39d33099, 0x3a100000,
|
0x39d050e8, 0x39d36000, 0x39d36099, 0x3a100000,
|
||||||
0x3b300000, 0x3b3000e9, 0x3bd00000, 0x3bd00001,
|
0x3b300000, 0x3b3000e9, 0x3bd00000, 0x3bd00001,
|
||||||
0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a,
|
0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a,
|
||||||
0x3c000041, 0x3c00004e, 0x3c00005a, 0x3c000086,
|
0x3c000041, 0x3c00004e, 0x3c00005a, 0x3c000086,
|
||||||
|
@ -966,7 +966,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
||||||
0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c,
|
0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c,
|
||||||
0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3,
|
0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3,
|
||||||
0x40200000, 0x4020004c, 0x40700000, 0x40800000,
|
0x40200000, 0x4020004c, 0x40700000, 0x40800000,
|
||||||
0x40857000, 0x408570ba, 0x408dc000, 0x408dc0ba,
|
0x4085a000, 0x4085a0ba, 0x408e3000, 0x408e30ba,
|
||||||
0x40c00000, 0x40c000b3, 0x41200000, 0x41200111,
|
0x40c00000, 0x40c000b3, 0x41200000, 0x41200111,
|
||||||
0x41600000, 0x4160010f, 0x41c00000, 0x41d00000,
|
0x41600000, 0x4160010f, 0x41c00000, 0x41d00000,
|
||||||
// Entry 280 - 29F
|
// Entry 280 - 29F
|
||||||
|
@ -974,9 +974,9 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
||||||
0x42300000, 0x42300164, 0x42900000, 0x42900062,
|
0x42300000, 0x42300164, 0x42900000, 0x42900062,
|
||||||
0x4290006f, 0x429000a4, 0x42900115, 0x43100000,
|
0x4290006f, 0x429000a4, 0x42900115, 0x43100000,
|
||||||
0x43100027, 0x431000c2, 0x4310014d, 0x43200000,
|
0x43100027, 0x431000c2, 0x4310014d, 0x43200000,
|
||||||
0x4321f000, 0x4321f033, 0x4321f0bd, 0x4321f105,
|
0x43220000, 0x43220033, 0x432200bd, 0x43220105,
|
||||||
0x4321f14d, 0x43257000, 0x43257033, 0x432570bd,
|
0x4322014d, 0x4325a000, 0x4325a033, 0x4325a0bd,
|
||||||
0x43257105, 0x4325714d, 0x43700000, 0x43a00000,
|
0x4325a105, 0x4325a14d, 0x43700000, 0x43a00000,
|
||||||
0x43b00000, 0x44400000, 0x44400031, 0x44400072,
|
0x43b00000, 0x44400000, 0x44400031, 0x44400072,
|
||||||
// Entry 2A0 - 2BF
|
// Entry 2A0 - 2BF
|
||||||
0x4440010c, 0x44500000, 0x4450004b, 0x445000a4,
|
0x4440010c, 0x44500000, 0x4450004b, 0x445000a4,
|
||||||
|
@ -992,24 +992,24 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
|
||||||
0x49400106, 0x4a400000, 0x4a4000d4, 0x4a900000,
|
0x49400106, 0x4a400000, 0x4a4000d4, 0x4a900000,
|
||||||
0x4a9000ba, 0x4ac00000, 0x4ac00053, 0x4ae00000,
|
0x4a9000ba, 0x4ac00000, 0x4ac00053, 0x4ae00000,
|
||||||
0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8,
|
0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8,
|
||||||
0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc1f000,
|
0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,
|
||||||
0x4bc1f137, 0x4bc57000, 0x4bc57137, 0x4be00000,
|
0x4bc20137, 0x4bc5a000, 0x4bc5a137, 0x4be00000,
|
||||||
0x4be57000, 0x4be570b4, 0x4bee3000, 0x4bee30b4,
|
0x4be5a000, 0x4be5a0b4, 0x4beeb000, 0x4beeb0b4,
|
||||||
0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000,
|
0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000,
|
||||||
// Entry 2E0 - 2FF
|
// Entry 2E0 - 2FF
|
||||||
0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000,
|
0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000,
|
||||||
0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500114,
|
0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500114,
|
||||||
0x4f200000, 0x4fb00000, 0x4fb00131, 0x50900000,
|
0x4f200000, 0x4fb00000, 0x4fb00131, 0x50900000,
|
||||||
0x50900052, 0x51200000, 0x51200001, 0x51800000,
|
0x50900052, 0x51200000, 0x51200001, 0x51800000,
|
||||||
0x5180003b, 0x518000d6, 0x51f00000, 0x51f38000,
|
0x5180003b, 0x518000d6, 0x51f00000, 0x51f3b000,
|
||||||
0x51f38053, 0x51f39000, 0x51f3908d, 0x52800000,
|
0x51f3b053, 0x51f3c000, 0x51f3c08d, 0x52800000,
|
||||||
0x528000ba, 0x52900000, 0x52938000, 0x52938053,
|
0x528000ba, 0x52900000, 0x5293b000, 0x5293b053,
|
||||||
0x5293808d, 0x529380c6, 0x5293810d, 0x52939000,
|
0x5293b08d, 0x5293b0c6, 0x5293b10d, 0x5293c000,
|
||||||
// Entry 300 - 31F
|
// Entry 300 - 31F
|
||||||
0x5293908d, 0x529390c6, 0x5293912e, 0x52f00000,
|
0x5293c08d, 0x5293c0c6, 0x5293c12e, 0x52f00000,
|
||||||
0x52f00161,
|
0x52f00161,
|
||||||
} // Size: 3116 bytes
|
} // Size: 3116 bytes
|
||||||
|
|
||||||
const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
|
const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
|
||||||
|
|
||||||
// Total table size 3147 bytes (3KiB); checksum: F4E57D15
|
// Total table size 3147 bytes (3KiB); checksum: BE816D44
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -35,16 +35,16 @@ const (
|
||||||
_XK = 333
|
_XK = 333
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
_Latn = 87
|
_Latn = 90
|
||||||
_Hani = 54
|
_Hani = 57
|
||||||
_Hans = 56
|
_Hans = 59
|
||||||
_Hant = 57
|
_Hant = 60
|
||||||
_Qaaa = 139
|
_Qaaa = 143
|
||||||
_Qaai = 147
|
_Qaai = 151
|
||||||
_Qabx = 188
|
_Qabx = 192
|
||||||
_Zinh = 236
|
_Zinh = 245
|
||||||
_Zyyy = 241
|
_Zyyy = 250
|
||||||
_Zzzz = 242
|
_Zzzz = 251
|
||||||
)
|
)
|
||||||
|
|
||||||
var regionToGroups = []uint8{ // 357 elements
|
var regionToGroups = []uint8{ // 357 elements
|
||||||
|
@ -249,32 +249,32 @@ var matchLang = []mutualIntelligibility{ // 113 elements
|
||||||
// matchScript holds pairs of scriptIDs where readers of one script
|
// matchScript holds pairs of scriptIDs where readers of one script
|
||||||
// can typically also read the other. Each is associated with a confidence.
|
// can typically also read the other. Each is associated with a confidence.
|
||||||
var matchScript = []scriptIntelligibility{ // 26 elements
|
var matchScript = []scriptIntelligibility{ // 26 elements
|
||||||
0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x57, haveScript: 0x1f, distance: 0x5},
|
0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5a, haveScript: 0x20, distance: 0x5},
|
||||||
1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x1f, haveScript: 0x57, distance: 0x5},
|
1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5a, distance: 0x5},
|
||||||
2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
|
2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
|
||||||
3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x57, distance: 0xa},
|
3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5a, distance: 0xa},
|
||||||
4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x1f, distance: 0xa},
|
4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa},
|
||||||
5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2b, haveScript: 0x57, distance: 0xa},
|
5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5a, distance: 0xa},
|
||||||
6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4b, haveScript: 0x57, distance: 0xa},
|
6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4e, haveScript: 0x5a, distance: 0xa},
|
||||||
7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x57, distance: 0xa},
|
7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x52, haveScript: 0x5a, distance: 0xa},
|
||||||
8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x54, haveScript: 0x57, distance: 0xa},
|
8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x57, haveScript: 0x5a, distance: 0xa},
|
||||||
9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6b, haveScript: 0x57, distance: 0xa},
|
9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6e, haveScript: 0x5a, distance: 0xa},
|
||||||
10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x72, haveScript: 0x57, distance: 0xa},
|
10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x75, haveScript: 0x5a, distance: 0xa},
|
||||||
11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x21, haveScript: 0x57, distance: 0xa},
|
11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5a, distance: 0xa},
|
||||||
12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x7d, haveScript: 0x57, distance: 0xa},
|
12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x81, haveScript: 0x5a, distance: 0xa},
|
||||||
13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x33, haveScript: 0x57, distance: 0xa},
|
13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5a, distance: 0xa},
|
||||||
14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
|
14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
|
15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xca, haveScript: 0x57, distance: 0xa},
|
16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xcf, haveScript: 0x5a, distance: 0xa},
|
||||||
17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xd7, haveScript: 0x57, distance: 0xa},
|
17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xde, haveScript: 0x5a, distance: 0xa},
|
||||||
18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xda, haveScript: 0x57, distance: 0xa},
|
18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe1, haveScript: 0x5a, distance: 0xa},
|
||||||
19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x29, haveScript: 0x57, distance: 0xa},
|
19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5a, distance: 0xa},
|
||||||
20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
|
20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
|
||||||
21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
|
21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
|
||||||
22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
|
22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
|
||||||
23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3b, haveScript: 0x57, distance: 0xa},
|
23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5a, distance: 0xa},
|
||||||
24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x38, haveScript: 0x39, distance: 0xf},
|
24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf},
|
||||||
25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x39, haveScript: 0x38, distance: 0x13},
|
25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13},
|
||||||
} // Size: 232 bytes
|
} // Size: 232 bytes
|
||||||
|
|
||||||
var matchRegion = []regionIntelligibility{ // 15 elements
|
var matchRegion = []regionIntelligibility{ // 15 elements
|
||||||
|
@ -286,13 +286,13 @@ var matchRegion = []regionIntelligibility{ // 15 elements
|
||||||
5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4},
|
5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4},
|
||||||
6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4},
|
6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4},
|
||||||
7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4},
|
7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4},
|
||||||
8: {lang: 0x529, script: 0x39, group: 0x2, distance: 0x4},
|
8: {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4},
|
||||||
9: {lang: 0x529, script: 0x39, group: 0x82, distance: 0x4},
|
9: {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4},
|
||||||
10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5},
|
10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5},
|
||||||
11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5},
|
11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5},
|
||||||
12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5},
|
12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5},
|
||||||
13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5},
|
13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5},
|
||||||
14: {lang: 0x529, script: 0x39, group: 0x80, distance: 0x5},
|
14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5},
|
||||||
} // Size: 114 bytes
|
} // Size: 114 bytes
|
||||||
|
|
||||||
// Total table size 1471 bytes (1KiB); checksum: 4CB1CD46
|
// Total table size 1471 bytes (1KiB); checksum: 4CB1CD46
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
||||||
|
|
||||||
// +build go1.14
|
// +build go1.14,!go1.16
|
||||||
|
|
||||||
package bidi
|
package bidi
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
||||||
|
|
||||||
// +build go1.14
|
// +build go1.14,!go1.16
|
||||||
|
|
||||||
package norm
|
package norm
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
syntax = 'proto2';
|
syntax = "proto2";
|
||||||
|
|
||||||
package k8s.io.apimachinery.pkg.api.resource;
|
package k8s.io.apimachinery.pkg.api.resource;
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"math/big"
|
"math/big"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -120,7 +121,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// MustParse turns the given string into a quantity or panics; for tests
|
// MustParse turns the given string into a quantity or panics; for tests
|
||||||
// or others cases where you know the string is valid.
|
// or other cases where you know the string is valid.
|
||||||
func MustParse(str string) Quantity {
|
func MustParse(str string) Quantity {
|
||||||
q, err := ParseQuantity(str)
|
q, err := ParseQuantity(str)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -442,6 +443,36 @@ func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsApproximateFloat64 returns a float64 representation of the quantity which may
|
||||||
|
// lose precision. If the value of the quantity is outside the range of a float64
|
||||||
|
// +Inf/-Inf will be returned.
|
||||||
|
func (q *Quantity) AsApproximateFloat64() float64 {
|
||||||
|
var base float64
|
||||||
|
var exponent int
|
||||||
|
if q.d.Dec != nil {
|
||||||
|
base, _ = big.NewFloat(0).SetInt(q.d.Dec.UnscaledBig()).Float64()
|
||||||
|
exponent = int(-q.d.Dec.Scale())
|
||||||
|
} else {
|
||||||
|
base = float64(q.i.value)
|
||||||
|
exponent = int(q.i.scale)
|
||||||
|
}
|
||||||
|
if exponent == 0 {
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
|
||||||
|
// multiply by the appropriate exponential scale
|
||||||
|
switch q.Format {
|
||||||
|
case DecimalExponent, DecimalSI:
|
||||||
|
return base * math.Pow10(exponent)
|
||||||
|
default:
|
||||||
|
// fast path for exponents that can fit in 64 bits
|
||||||
|
if exponent > 0 && exponent < 7 {
|
||||||
|
return base * float64(int64(1)<<(exponent*10))
|
||||||
|
}
|
||||||
|
return base * math.Pow(2, float64(exponent*10))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// AsInt64 returns a representation of the current value as an int64 if a fast conversion
|
// AsInt64 returns a representation of the current value as an int64 if a fast conversion
|
||||||
// is possible. If false is returned, callers must use the inf.Dec form of this quantity.
|
// is possible. If false is returned, callers must use the inf.Dec form of this quantity.
|
||||||
func (q *Quantity) AsInt64() (int64, bool) {
|
func (q *Quantity) AsInt64() (int64, bool) {
|
||||||
|
@ -598,6 +629,9 @@ const int64QuantityExpectedBytes = 18
|
||||||
// String is an expensive operation and caching this result significantly reduces the cost of
|
// String is an expensive operation and caching this result significantly reduces the cost of
|
||||||
// normal parse / marshal operations on Quantity.
|
// normal parse / marshal operations on Quantity.
|
||||||
func (q *Quantity) String() string {
|
func (q *Quantity) String() string {
|
||||||
|
if q == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
if len(q.s) == 0 {
|
if len(q.s) == 0 {
|
||||||
result := make([]byte, 0, int64QuantityExpectedBytes)
|
result := make([]byte, 0, int64QuantityExpectedBytes)
|
||||||
number, suffix := q.CanonicalizeBytes(result)
|
number, suffix := q.CanonicalizeBytes(result)
|
||||||
|
|
|
@ -26,6 +26,5 @@ reviewers:
|
||||||
- mml
|
- mml
|
||||||
- mbohlool
|
- mbohlool
|
||||||
- therc
|
- therc
|
||||||
- mqliang
|
|
||||||
- kevin-wangzefeng
|
- kevin-wangzefeng
|
||||||
- jianhuiz
|
- jianhuiz
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
syntax = 'proto2';
|
syntax = "proto2";
|
||||||
|
|
||||||
package k8s.io.apimachinery.pkg.apis.meta.v1;
|
package k8s.io.apimachinery.pkg.apis.meta.v1;
|
||||||
|
|
||||||
|
@ -375,6 +375,7 @@ message GroupVersionResource {
|
||||||
// A label selector is a label query over a set of resources. The result of matchLabels and
|
// A label selector is a label query over a set of resources. The result of matchLabels and
|
||||||
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
||||||
// label selector matches no objects.
|
// label selector matches no objects.
|
||||||
|
// +structType=atomic
|
||||||
message LabelSelector {
|
message LabelSelector {
|
||||||
// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
||||||
// map is equivalent to an element of matchExpressions, whose key field is "key", the
|
// map is equivalent to an element of matchExpressions, whose key field is "key", the
|
||||||
|
|
|
@ -34,6 +34,9 @@ type GroupResource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gr *GroupResource) String() string {
|
func (gr *GroupResource) String() string {
|
||||||
|
if gr == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
if len(gr.Group) == 0 {
|
if len(gr.Group) == 0 {
|
||||||
return gr.Resource
|
return gr.Resource
|
||||||
}
|
}
|
||||||
|
@ -51,6 +54,9 @@ type GroupVersionResource struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gvr *GroupVersionResource) String() string {
|
func (gvr *GroupVersionResource) String() string {
|
||||||
|
if gvr == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "")
|
return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +70,9 @@ type GroupKind struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gk *GroupKind) String() string {
|
func (gk *GroupKind) String() string {
|
||||||
|
if gk == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
if len(gk.Group) == 0 {
|
if len(gk.Group) == 0 {
|
||||||
return gk.Kind
|
return gk.Kind
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,6 +201,20 @@ func SetMetaDataAnnotation(obj *ObjectMeta, ann string, value string) {
|
||||||
obj.Annotations[ann] = value
|
obj.Annotations[ann] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasLabel returns a bool if passed in label exists
|
||||||
|
func HasLabel(obj ObjectMeta, label string) bool {
|
||||||
|
_, found := obj.Labels[label]
|
||||||
|
return found
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaDataLabel sets the label and value
|
||||||
|
func SetMetaDataLabel(obj *ObjectMeta, label string, value string) {
|
||||||
|
if obj.Labels == nil {
|
||||||
|
obj.Labels = make(map[string]string)
|
||||||
|
}
|
||||||
|
obj.Labels[label] = value
|
||||||
|
}
|
||||||
|
|
||||||
// SingleObject returns a ListOptions for watching a single object.
|
// SingleObject returns a ListOptions for watching a single object.
|
||||||
func SingleObject(meta ObjectMeta) ListOptions {
|
func SingleObject(meta ObjectMeta) ListOptions {
|
||||||
return ListOptions{
|
return ListOptions{
|
||||||
|
|
|
@ -19,8 +19,6 @@ package v1
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/gofuzz"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00"
|
const RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00"
|
||||||
|
@ -181,16 +179,3 @@ func (t MicroTime) MarshalQueryParameter() (string, error) {
|
||||||
|
|
||||||
return t.UTC().Format(RFC3339Micro), nil
|
return t.UTC().Format(RFC3339Micro), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fuzz satisfies fuzz.Interface.
|
|
||||||
func (t *MicroTime) Fuzz(c fuzz.Continue) {
|
|
||||||
if t == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// Allow for about 1000 years of randomness. Accurate to a tenth of
|
|
||||||
// micro second. Leave off nanoseconds because JSON doesn't
|
|
||||||
// represent them so they can't round-trip properly.
|
|
||||||
t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 1000*c.Rand.Int63n(1000000))
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ fuzz.Interface = &MicroTime{}
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
// +build !notest
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
fuzz "github.com/google/gofuzz"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fuzz satisfies fuzz.Interface.
|
||||||
|
func (t *MicroTime) Fuzz(c fuzz.Continue) {
|
||||||
|
if t == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Allow for about 1000 years of randomness. Accurate to a tenth of
|
||||||
|
// micro second. Leave off nanoseconds because JSON doesn't
|
||||||
|
// represent them so they can't round-trip properly.
|
||||||
|
t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 1000*c.Rand.Int63n(1000000))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure MicroTime implements fuzz.Interface
|
||||||
|
var _ fuzz.Interface = &MicroTime{}
|
|
@ -19,8 +19,6 @@ package v1
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
fuzz "github.com/google/gofuzz"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Time is a wrapper around time.Time which supports correct
|
// Time is a wrapper around time.Time which supports correct
|
||||||
|
@ -182,16 +180,3 @@ func (t Time) MarshalQueryParameter() (string, error) {
|
||||||
|
|
||||||
return t.UTC().Format(time.RFC3339), nil
|
return t.UTC().Format(time.RFC3339), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fuzz satisfies fuzz.Interface.
|
|
||||||
func (t *Time) Fuzz(c fuzz.Continue) {
|
|
||||||
if t == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// Allow for about 1000 years of randomness. Leave off nanoseconds
|
|
||||||
// because JSON doesn't represent them so they can't round-trip
|
|
||||||
// properly.
|
|
||||||
t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ fuzz.Interface = &Time{}
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
// +build !notest
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
fuzz "github.com/google/gofuzz"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fuzz satisfies fuzz.Interface.
|
||||||
|
func (t *Time) Fuzz(c fuzz.Continue) {
|
||||||
|
if t == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Allow for about 1000 years of randomness. Leave off nanoseconds
|
||||||
|
// because JSON doesn't represent them so they can't round-trip
|
||||||
|
// properly.
|
||||||
|
t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure Time implements fuzz.Interface
|
||||||
|
var _ fuzz.Interface = &Time{}
|
|
@ -1092,6 +1092,7 @@ type Patch struct{}
|
||||||
// A label selector is a label query over a set of resources. The result of matchLabels and
|
// A label selector is a label query over a set of resources. The result of matchLabels and
|
||||||
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
||||||
// label selector matches no objects.
|
// label selector matches no objects.
|
||||||
|
// +structType=atomic
|
||||||
type LabelSelector struct {
|
type LabelSelector struct {
|
||||||
// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
||||||
// map is equivalent to an element of matchExpressions, whose key field is "key", the
|
// map is equivalent to an element of matchExpressions, whose key field is "key", the
|
||||||
|
|
|
@ -282,14 +282,6 @@ func getNestedString(obj map[string]interface{}, fields ...string) string {
|
||||||
return val
|
return val
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNestedInt64(obj map[string]interface{}, fields ...string) int64 {
|
|
||||||
val, found, err := NestedInt64(obj, fields...)
|
|
||||||
if !found || err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
func getNestedInt64Pointer(obj map[string]interface{}, fields ...string) *int64 {
|
func getNestedInt64Pointer(obj map[string]interface{}, fields ...string) *int64 {
|
||||||
val, found, err := NestedInt64(obj, fields...)
|
val, found, err := NestedInt64(obj, fields...)
|
||||||
if !found || err != nil {
|
if !found || err != nil {
|
||||||
|
|
|
@ -26,16 +26,6 @@ type typePair struct {
|
||||||
dest reflect.Type
|
dest reflect.Type
|
||||||
}
|
}
|
||||||
|
|
||||||
type typeNamePair struct {
|
|
||||||
fieldType reflect.Type
|
|
||||||
fieldName string
|
|
||||||
}
|
|
||||||
|
|
||||||
// DebugLogger allows you to get debugging messages if necessary.
|
|
||||||
type DebugLogger interface {
|
|
||||||
Logf(format string, args ...interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
type NameFunc func(t reflect.Type) string
|
type NameFunc func(t reflect.Type) string
|
||||||
|
|
||||||
var DefaultNameFunc = func(t reflect.Type) string { return t.Name() }
|
var DefaultNameFunc = func(t reflect.Type) string { return t.Name() }
|
||||||
|
@ -57,24 +47,6 @@ type Converter struct {
|
||||||
ignoredConversions map[typePair]struct{}
|
ignoredConversions map[typePair]struct{}
|
||||||
ignoredUntypedConversions map[typePair]struct{}
|
ignoredUntypedConversions map[typePair]struct{}
|
||||||
|
|
||||||
// This is a map from a source field type and name, to a list of destination
|
|
||||||
// field type and name.
|
|
||||||
structFieldDests map[typeNamePair][]typeNamePair
|
|
||||||
|
|
||||||
// Allows for the opposite lookup of structFieldDests. So that SourceFromDest
|
|
||||||
// copy flag also works. So this is a map of destination field name, to potential
|
|
||||||
// source field name and type to look for.
|
|
||||||
structFieldSources map[typeNamePair][]typeNamePair
|
|
||||||
|
|
||||||
// Map from an input type to a function which can apply a key name mapping
|
|
||||||
inputFieldMappingFuncs map[reflect.Type]FieldMappingFunc
|
|
||||||
|
|
||||||
// Map from an input type to a set of default conversion flags.
|
|
||||||
inputDefaultFlags map[reflect.Type]FieldMatchingFlags
|
|
||||||
|
|
||||||
// If non-nil, will be called to print helpful debugging info. Quite verbose.
|
|
||||||
Debug DebugLogger
|
|
||||||
|
|
||||||
// nameFunc is called to retrieve the name of a type; this name is used for the
|
// nameFunc is called to retrieve the name of a type; this name is used for the
|
||||||
// purpose of deciding whether two types match or not (i.e., will we attempt to
|
// purpose of deciding whether two types match or not (i.e., will we attempt to
|
||||||
// do a conversion). The default returns the go type name.
|
// do a conversion). The default returns the go type name.
|
||||||
|
@ -89,11 +61,6 @@ func NewConverter(nameFn NameFunc) *Converter {
|
||||||
ignoredConversions: make(map[typePair]struct{}),
|
ignoredConversions: make(map[typePair]struct{}),
|
||||||
ignoredUntypedConversions: make(map[typePair]struct{}),
|
ignoredUntypedConversions: make(map[typePair]struct{}),
|
||||||
nameFunc: nameFn,
|
nameFunc: nameFn,
|
||||||
structFieldDests: make(map[typeNamePair][]typeNamePair),
|
|
||||||
structFieldSources: make(map[typeNamePair][]typeNamePair),
|
|
||||||
|
|
||||||
inputFieldMappingFuncs: make(map[reflect.Type]FieldMappingFunc),
|
|
||||||
inputDefaultFlags: make(map[reflect.Type]FieldMatchingFlags),
|
|
||||||
}
|
}
|
||||||
c.RegisterUntypedConversionFunc(
|
c.RegisterUntypedConversionFunc(
|
||||||
(*[]byte)(nil), (*[]byte)(nil),
|
(*[]byte)(nil), (*[]byte)(nil),
|
||||||
|
@ -112,11 +79,9 @@ func (c *Converter) WithConversions(fns ConversionFuncs) *Converter {
|
||||||
return &copied
|
return &copied
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultMeta returns the conversion FieldMappingFunc and meta for a given type.
|
// DefaultMeta returns meta for a given type.
|
||||||
func (c *Converter) DefaultMeta(t reflect.Type) (FieldMatchingFlags, *Meta) {
|
func (c *Converter) DefaultMeta(t reflect.Type) *Meta {
|
||||||
return c.inputDefaultFlags[t], &Meta{
|
return &Meta{}
|
||||||
KeyNameMapping: c.inputFieldMappingFuncs[t],
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert_Slice_byte_To_Slice_byte prevents recursing into every byte
|
// Convert_Slice_byte_To_Slice_byte prevents recursing into every byte
|
||||||
|
@ -136,24 +101,12 @@ func Convert_Slice_byte_To_Slice_byte(in *[]byte, out *[]byte, s Scope) error {
|
||||||
type Scope interface {
|
type Scope interface {
|
||||||
// Call Convert to convert sub-objects. Note that if you call it with your own exact
|
// Call Convert to convert sub-objects. Note that if you call it with your own exact
|
||||||
// parameters, you'll run out of stack space before anything useful happens.
|
// parameters, you'll run out of stack space before anything useful happens.
|
||||||
Convert(src, dest interface{}, flags FieldMatchingFlags) error
|
Convert(src, dest interface{}) error
|
||||||
|
|
||||||
// SrcTags and DestTags contain the struct tags that src and dest had, respectively.
|
|
||||||
// If the enclosing object was not a struct, then these will contain no tags, of course.
|
|
||||||
SrcTag() reflect.StructTag
|
|
||||||
DestTag() reflect.StructTag
|
|
||||||
|
|
||||||
// Flags returns the flags with which the conversion was started.
|
|
||||||
Flags() FieldMatchingFlags
|
|
||||||
|
|
||||||
// Meta returns any information originally passed to Convert.
|
// Meta returns any information originally passed to Convert.
|
||||||
Meta() *Meta
|
Meta() *Meta
|
||||||
}
|
}
|
||||||
|
|
||||||
// FieldMappingFunc can convert an input field value into different values, depending on
|
|
||||||
// the value of the source or destination struct tags.
|
|
||||||
type FieldMappingFunc func(key string, sourceTag, destTag reflect.StructTag) (source string, dest string)
|
|
||||||
|
|
||||||
func NewConversionFuncs() ConversionFuncs {
|
func NewConversionFuncs() ConversionFuncs {
|
||||||
return ConversionFuncs{
|
return ConversionFuncs{
|
||||||
untyped: make(map[typePair]ConversionFunc),
|
untyped: make(map[typePair]ConversionFunc),
|
||||||
|
@ -194,9 +147,6 @@ func (c ConversionFuncs) Merge(other ConversionFuncs) ConversionFuncs {
|
||||||
|
|
||||||
// Meta is supplied by Scheme, when it calls Convert.
|
// Meta is supplied by Scheme, when it calls Convert.
|
||||||
type Meta struct {
|
type Meta struct {
|
||||||
// KeyNameMapping is an optional function which may map the listed key (field name)
|
|
||||||
// into a source and destination value.
|
|
||||||
KeyNameMapping FieldMappingFunc
|
|
||||||
// Context is an optional field that callers may use to pass info to conversion functions.
|
// Context is an optional field that callers may use to pass info to conversion functions.
|
||||||
Context interface{}
|
Context interface{}
|
||||||
}
|
}
|
||||||
|
@ -205,84 +155,11 @@ type Meta struct {
|
||||||
type scope struct {
|
type scope struct {
|
||||||
converter *Converter
|
converter *Converter
|
||||||
meta *Meta
|
meta *Meta
|
||||||
flags FieldMatchingFlags
|
|
||||||
|
|
||||||
// srcStack & destStack are separate because they may not have a 1:1
|
|
||||||
// relationship.
|
|
||||||
srcStack scopeStack
|
|
||||||
destStack scopeStack
|
|
||||||
}
|
|
||||||
|
|
||||||
type scopeStackElem struct {
|
|
||||||
tag reflect.StructTag
|
|
||||||
value reflect.Value
|
|
||||||
key string
|
|
||||||
}
|
|
||||||
|
|
||||||
type scopeStack []scopeStackElem
|
|
||||||
|
|
||||||
func (s *scopeStack) pop() {
|
|
||||||
n := len(*s)
|
|
||||||
*s = (*s)[:n-1]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *scopeStack) push(e scopeStackElem) {
|
|
||||||
*s = append(*s, e)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *scopeStack) top() *scopeStackElem {
|
|
||||||
return &(*s)[len(*s)-1]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s scopeStack) describe() string {
|
|
||||||
desc := ""
|
|
||||||
if len(s) > 1 {
|
|
||||||
desc = "(" + s[1].value.Type().String() + ")"
|
|
||||||
}
|
|
||||||
for i, v := range s {
|
|
||||||
if i < 2 {
|
|
||||||
// First layer on stack is not real; second is handled specially above.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if v.key == "" {
|
|
||||||
desc += fmt.Sprintf(".%v", v.value.Type())
|
|
||||||
} else {
|
|
||||||
desc += fmt.Sprintf(".%v", v.key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return desc
|
|
||||||
}
|
|
||||||
|
|
||||||
// Formats src & dest as indices for printing.
|
|
||||||
func (s *scope) setIndices(src, dest int) {
|
|
||||||
s.srcStack.top().key = fmt.Sprintf("[%v]", src)
|
|
||||||
s.destStack.top().key = fmt.Sprintf("[%v]", dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Formats src & dest as map keys for printing.
|
|
||||||
func (s *scope) setKeys(src, dest interface{}) {
|
|
||||||
s.srcStack.top().key = fmt.Sprintf(`["%v"]`, src)
|
|
||||||
s.destStack.top().key = fmt.Sprintf(`["%v"]`, dest)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert continues a conversion.
|
// Convert continues a conversion.
|
||||||
func (s *scope) Convert(src, dest interface{}, flags FieldMatchingFlags) error {
|
func (s *scope) Convert(src, dest interface{}) error {
|
||||||
return s.converter.Convert(src, dest, flags, s.meta)
|
return s.converter.Convert(src, dest, s.meta)
|
||||||
}
|
|
||||||
|
|
||||||
// SrcTag returns the tag of the struct containing the current source item, if any.
|
|
||||||
func (s *scope) SrcTag() reflect.StructTag {
|
|
||||||
return s.srcStack.top().tag
|
|
||||||
}
|
|
||||||
|
|
||||||
// DestTag returns the tag of the struct containing the current dest item, if any.
|
|
||||||
func (s *scope) DestTag() reflect.StructTag {
|
|
||||||
return s.destStack.top().tag
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flags returns the flags with which the current conversion was started.
|
|
||||||
func (s *scope) Flags() FieldMatchingFlags {
|
|
||||||
return s.flags
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Meta returns the meta object that was originally passed to Convert.
|
// Meta returns the meta object that was originally passed to Convert.
|
||||||
|
@ -290,50 +167,6 @@ func (s *scope) Meta() *Meta {
|
||||||
return s.meta
|
return s.meta
|
||||||
}
|
}
|
||||||
|
|
||||||
// describe prints the path to get to the current (source, dest) values.
|
|
||||||
func (s *scope) describe() (src, dest string) {
|
|
||||||
return s.srcStack.describe(), s.destStack.describe()
|
|
||||||
}
|
|
||||||
|
|
||||||
// error makes an error that includes information about where we were in the objects
|
|
||||||
// we were asked to convert.
|
|
||||||
func (s *scope) errorf(message string, args ...interface{}) error {
|
|
||||||
srcPath, destPath := s.describe()
|
|
||||||
where := fmt.Sprintf("converting %v to %v: ", srcPath, destPath)
|
|
||||||
return fmt.Errorf(where+message, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verifies whether a conversion function has a correct signature.
|
|
||||||
func verifyConversionFunctionSignature(ft reflect.Type) error {
|
|
||||||
if ft.Kind() != reflect.Func {
|
|
||||||
return fmt.Errorf("expected func, got: %v", ft)
|
|
||||||
}
|
|
||||||
if ft.NumIn() != 3 {
|
|
||||||
return fmt.Errorf("expected three 'in' params, got: %v", ft)
|
|
||||||
}
|
|
||||||
if ft.NumOut() != 1 {
|
|
||||||
return fmt.Errorf("expected one 'out' param, got: %v", ft)
|
|
||||||
}
|
|
||||||
if ft.In(0).Kind() != reflect.Ptr {
|
|
||||||
return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft)
|
|
||||||
}
|
|
||||||
if ft.In(1).Kind() != reflect.Ptr {
|
|
||||||
return fmt.Errorf("expected pointer arg for 'in' param 1, got: %v", ft)
|
|
||||||
}
|
|
||||||
scopeType := Scope(nil)
|
|
||||||
if e, a := reflect.TypeOf(&scopeType).Elem(), ft.In(2); e != a {
|
|
||||||
return fmt.Errorf("expected '%v' arg for 'in' param 2, got '%v' (%v)", e, a, ft)
|
|
||||||
}
|
|
||||||
var forErrorType error
|
|
||||||
// This convolution is necessary, otherwise TypeOf picks up on the fact
|
|
||||||
// that forErrorType is nil.
|
|
||||||
errorType := reflect.TypeOf(&forErrorType).Elem()
|
|
||||||
if ft.Out(0) != errorType {
|
|
||||||
return fmt.Errorf("expected error return, got: %v", ft)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RegisterUntypedConversionFunc registers a function that converts between a and b by passing objects of those
|
// RegisterUntypedConversionFunc registers a function that converts between a and b by passing objects of those
|
||||||
// types to the provided function. The function *must* accept objects of a and b - this machinery will not enforce
|
// types to the provided function. The function *must* accept objects of a and b - this machinery will not enforce
|
||||||
// any other guarantee.
|
// any other guarantee.
|
||||||
|
@ -364,71 +197,16 @@ func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterInputDefaults registers a field name mapping function, used when converting
|
|
||||||
// from maps to structs. Inputs to the conversion methods are checked for this type and a mapping
|
|
||||||
// applied automatically if the input matches in. A set of default flags for the input conversion
|
|
||||||
// may also be provided, which will be used when no explicit flags are requested.
|
|
||||||
func (c *Converter) RegisterInputDefaults(in interface{}, fn FieldMappingFunc, defaultFlags FieldMatchingFlags) error {
|
|
||||||
fv := reflect.ValueOf(in)
|
|
||||||
ft := fv.Type()
|
|
||||||
if ft.Kind() != reflect.Ptr {
|
|
||||||
return fmt.Errorf("expected pointer 'in' argument, got: %v", ft)
|
|
||||||
}
|
|
||||||
c.inputFieldMappingFuncs[ft] = fn
|
|
||||||
c.inputDefaultFlags[ft] = defaultFlags
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// FieldMatchingFlags contains a list of ways in which struct fields could be
|
|
||||||
// copied. These constants may be | combined.
|
|
||||||
type FieldMatchingFlags int
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Loop through destination fields, search for matching source
|
|
||||||
// field to copy it from. Source fields with no corresponding
|
|
||||||
// destination field will be ignored. If SourceToDest is
|
|
||||||
// specified, this flag is ignored. If neither is specified,
|
|
||||||
// or no flags are passed, this flag is the default.
|
|
||||||
DestFromSource FieldMatchingFlags = 0
|
|
||||||
// Loop through source fields, search for matching dest field
|
|
||||||
// to copy it into. Destination fields with no corresponding
|
|
||||||
// source field will be ignored.
|
|
||||||
SourceToDest FieldMatchingFlags = 1 << iota
|
|
||||||
// Don't treat it as an error if the corresponding source or
|
|
||||||
// dest field can't be found.
|
|
||||||
IgnoreMissingFields
|
|
||||||
// Don't require type names to match.
|
|
||||||
AllowDifferentFieldTypeNames
|
|
||||||
)
|
|
||||||
|
|
||||||
// IsSet returns true if the given flag or combination of flags is set.
|
|
||||||
func (f FieldMatchingFlags) IsSet(flag FieldMatchingFlags) bool {
|
|
||||||
if flag == DestFromSource {
|
|
||||||
// The bit logic doesn't work on the default value.
|
|
||||||
return f&SourceToDest != SourceToDest
|
|
||||||
}
|
|
||||||
return f&flag == flag
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert will translate src to dest if it knows how. Both must be pointers.
|
// Convert will translate src to dest if it knows how. Both must be pointers.
|
||||||
// If no conversion func is registered and the default copying mechanism
|
// If no conversion func is registered and the default copying mechanism
|
||||||
// doesn't work on this type pair, an error will be returned.
|
// doesn't work on this type pair, an error will be returned.
|
||||||
// Read the comments on the various FieldMatchingFlags constants to understand
|
|
||||||
// what the 'flags' parameter does.
|
|
||||||
// 'meta' is given to allow you to pass information to conversion functions,
|
// 'meta' is given to allow you to pass information to conversion functions,
|
||||||
// it is not used by Convert() other than storing it in the scope.
|
// it is not used by Convert() other than storing it in the scope.
|
||||||
// Not safe for objects with cyclic references!
|
// Not safe for objects with cyclic references!
|
||||||
func (c *Converter) Convert(src, dest interface{}, flags FieldMatchingFlags, meta *Meta) error {
|
func (c *Converter) Convert(src, dest interface{}, meta *Meta) error {
|
||||||
return c.doConversion(src, dest, flags, meta, c.convert)
|
|
||||||
}
|
|
||||||
|
|
||||||
type conversionFunc func(sv, dv reflect.Value, scope *scope) error
|
|
||||||
|
|
||||||
func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags, meta *Meta, f conversionFunc) error {
|
|
||||||
pair := typePair{reflect.TypeOf(src), reflect.TypeOf(dest)}
|
pair := typePair{reflect.TypeOf(src), reflect.TypeOf(dest)}
|
||||||
scope := &scope{
|
scope := &scope{
|
||||||
converter: c,
|
converter: c,
|
||||||
flags: flags,
|
|
||||||
meta: meta,
|
meta: meta,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,366 +230,4 @@ func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return fmt.Errorf("converting (%s) to (%s): unknown conversion", sv.Type(), dv.Type())
|
return fmt.Errorf("converting (%s) to (%s): unknown conversion", sv.Type(), dv.Type())
|
||||||
|
|
||||||
// TODO: Everything past this point is deprecated.
|
|
||||||
// Remove in 1.20 once we're sure it didn't break anything.
|
|
||||||
|
|
||||||
// Leave something on the stack, so that calls to struct tag getters never fail.
|
|
||||||
scope.srcStack.push(scopeStackElem{})
|
|
||||||
scope.destStack.push(scopeStackElem{})
|
|
||||||
return f(sv, dv, scope)
|
|
||||||
}
|
|
||||||
|
|
||||||
// callUntyped calls predefined conversion func.
|
|
||||||
func (c *Converter) callUntyped(sv, dv reflect.Value, f ConversionFunc, scope *scope) error {
|
|
||||||
if !dv.CanAddr() {
|
|
||||||
return scope.errorf("cant addr dest")
|
|
||||||
}
|
|
||||||
var svPointer reflect.Value
|
|
||||||
if sv.CanAddr() {
|
|
||||||
svPointer = sv.Addr()
|
|
||||||
} else {
|
|
||||||
svPointer = reflect.New(sv.Type())
|
|
||||||
svPointer.Elem().Set(sv)
|
|
||||||
}
|
|
||||||
dvPointer := dv.Addr()
|
|
||||||
return f(svPointer.Interface(), dvPointer.Interface(), scope)
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert recursively copies sv into dv, calling an appropriate conversion function if
|
|
||||||
// one is registered.
|
|
||||||
func (c *Converter) convert(sv, dv reflect.Value, scope *scope) error {
|
|
||||||
dt, st := dv.Type(), sv.Type()
|
|
||||||
pair := typePair{st, dt}
|
|
||||||
|
|
||||||
// ignore conversions of this type
|
|
||||||
if _, ok := c.ignoredConversions[pair]; ok {
|
|
||||||
if c.Debug != nil {
|
|
||||||
c.Debug.Logf("Ignoring conversion of '%v' to '%v'", st, dt)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert sv to dv.
|
|
||||||
pair = typePair{reflect.PtrTo(sv.Type()), reflect.PtrTo(dv.Type())}
|
|
||||||
if f, ok := c.conversionFuncs.untyped[pair]; ok {
|
|
||||||
return c.callUntyped(sv, dv, f, scope)
|
|
||||||
}
|
|
||||||
if f, ok := c.generatedConversionFuncs.untyped[pair]; ok {
|
|
||||||
return c.callUntyped(sv, dv, f, scope)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !dv.CanSet() {
|
|
||||||
return scope.errorf("Cannot set dest. (Tried to deep copy something with unexported fields?)")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !scope.flags.IsSet(AllowDifferentFieldTypeNames) && c.nameFunc(dt) != c.nameFunc(st) {
|
|
||||||
return scope.errorf(
|
|
||||||
"type names don't match (%v, %v), and no conversion 'func (%v, %v) error' registered.",
|
|
||||||
c.nameFunc(st), c.nameFunc(dt), st, dt)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch st.Kind() {
|
|
||||||
case reflect.Map, reflect.Ptr, reflect.Slice, reflect.Interface, reflect.Struct:
|
|
||||||
// Don't copy these via assignment/conversion!
|
|
||||||
default:
|
|
||||||
// This should handle all simple types.
|
|
||||||
if st.AssignableTo(dt) {
|
|
||||||
dv.Set(sv)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if st.ConvertibleTo(dt) {
|
|
||||||
dv.Set(sv.Convert(dt))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Debug != nil {
|
|
||||||
c.Debug.Logf("Trying to convert '%v' to '%v'", st, dt)
|
|
||||||
}
|
|
||||||
|
|
||||||
scope.srcStack.push(scopeStackElem{value: sv})
|
|
||||||
scope.destStack.push(scopeStackElem{value: dv})
|
|
||||||
defer scope.srcStack.pop()
|
|
||||||
defer scope.destStack.pop()
|
|
||||||
|
|
||||||
switch dv.Kind() {
|
|
||||||
case reflect.Struct:
|
|
||||||
return c.convertKV(toKVValue(sv), toKVValue(dv), scope)
|
|
||||||
case reflect.Slice:
|
|
||||||
if sv.IsNil() {
|
|
||||||
// Don't make a zero-length slice.
|
|
||||||
dv.Set(reflect.Zero(dt))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
dv.Set(reflect.MakeSlice(dt, sv.Len(), sv.Cap()))
|
|
||||||
for i := 0; i < sv.Len(); i++ {
|
|
||||||
scope.setIndices(i, i)
|
|
||||||
if err := c.convert(sv.Index(i), dv.Index(i), scope); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case reflect.Ptr:
|
|
||||||
if sv.IsNil() {
|
|
||||||
// Don't copy a nil ptr!
|
|
||||||
dv.Set(reflect.Zero(dt))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
dv.Set(reflect.New(dt.Elem()))
|
|
||||||
switch st.Kind() {
|
|
||||||
case reflect.Ptr, reflect.Interface:
|
|
||||||
return c.convert(sv.Elem(), dv.Elem(), scope)
|
|
||||||
default:
|
|
||||||
return c.convert(sv, dv.Elem(), scope)
|
|
||||||
}
|
|
||||||
case reflect.Map:
|
|
||||||
if sv.IsNil() {
|
|
||||||
// Don't copy a nil ptr!
|
|
||||||
dv.Set(reflect.Zero(dt))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
dv.Set(reflect.MakeMap(dt))
|
|
||||||
for _, sk := range sv.MapKeys() {
|
|
||||||
dk := reflect.New(dt.Key()).Elem()
|
|
||||||
if err := c.convert(sk, dk, scope); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
dkv := reflect.New(dt.Elem()).Elem()
|
|
||||||
scope.setKeys(sk.Interface(), dk.Interface())
|
|
||||||
// TODO: sv.MapIndex(sk) may return a value with CanAddr() == false,
|
|
||||||
// because a map[string]struct{} does not allow a pointer reference.
|
|
||||||
// Calling a custom conversion function defined for the map value
|
|
||||||
// will panic. Example is PodInfo map[string]ContainerStatus.
|
|
||||||
if err := c.convert(sv.MapIndex(sk), dkv, scope); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
dv.SetMapIndex(dk, dkv)
|
|
||||||
}
|
|
||||||
case reflect.Interface:
|
|
||||||
if sv.IsNil() {
|
|
||||||
// Don't copy a nil interface!
|
|
||||||
dv.Set(reflect.Zero(dt))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
tmpdv := reflect.New(sv.Elem().Type()).Elem()
|
|
||||||
if err := c.convert(sv.Elem(), tmpdv, scope); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
dv.Set(reflect.ValueOf(tmpdv.Interface()))
|
|
||||||
return nil
|
|
||||||
default:
|
|
||||||
return scope.errorf("couldn't copy '%v' into '%v'; didn't understand types", st, dt)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var stringType = reflect.TypeOf("")
|
|
||||||
|
|
||||||
func toKVValue(v reflect.Value) kvValue {
|
|
||||||
switch v.Kind() {
|
|
||||||
case reflect.Struct:
|
|
||||||
return structAdaptor(v)
|
|
||||||
case reflect.Map:
|
|
||||||
if v.Type().Key().AssignableTo(stringType) {
|
|
||||||
return stringMapAdaptor(v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// kvValue lets us write the same conversion logic to work with both maps
|
|
||||||
// and structs. Only maps with string keys make sense for this.
|
|
||||||
type kvValue interface {
|
|
||||||
// returns all keys, as a []string.
|
|
||||||
keys() []string
|
|
||||||
// Will just return "" for maps.
|
|
||||||
tagOf(key string) reflect.StructTag
|
|
||||||
// Will return the zero Value if the key doesn't exist.
|
|
||||||
value(key string) reflect.Value
|
|
||||||
// Maps require explicit setting-- will do nothing for structs.
|
|
||||||
// Returns false on failure.
|
|
||||||
confirmSet(key string, v reflect.Value) bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type stringMapAdaptor reflect.Value
|
|
||||||
|
|
||||||
func (a stringMapAdaptor) len() int {
|
|
||||||
return reflect.Value(a).Len()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a stringMapAdaptor) keys() []string {
|
|
||||||
v := reflect.Value(a)
|
|
||||||
keys := make([]string, v.Len())
|
|
||||||
for i, v := range v.MapKeys() {
|
|
||||||
if v.IsNil() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch t := v.Interface().(type) {
|
|
||||||
case string:
|
|
||||||
keys[i] = t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return keys
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a stringMapAdaptor) tagOf(key string) reflect.StructTag {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a stringMapAdaptor) value(key string) reflect.Value {
|
|
||||||
return reflect.Value(a).MapIndex(reflect.ValueOf(key))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a stringMapAdaptor) confirmSet(key string, v reflect.Value) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
type structAdaptor reflect.Value
|
|
||||||
|
|
||||||
func (a structAdaptor) len() int {
|
|
||||||
v := reflect.Value(a)
|
|
||||||
return v.Type().NumField()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a structAdaptor) keys() []string {
|
|
||||||
v := reflect.Value(a)
|
|
||||||
t := v.Type()
|
|
||||||
keys := make([]string, t.NumField())
|
|
||||||
for i := range keys {
|
|
||||||
keys[i] = t.Field(i).Name
|
|
||||||
}
|
|
||||||
return keys
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a structAdaptor) tagOf(key string) reflect.StructTag {
|
|
||||||
v := reflect.Value(a)
|
|
||||||
field, ok := v.Type().FieldByName(key)
|
|
||||||
if ok {
|
|
||||||
return field.Tag
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a structAdaptor) value(key string) reflect.Value {
|
|
||||||
v := reflect.Value(a)
|
|
||||||
return v.FieldByName(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a structAdaptor) confirmSet(key string, v reflect.Value) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// convertKV can convert things that consist of key/value pairs, like structs
|
|
||||||
// and some maps.
|
|
||||||
func (c *Converter) convertKV(skv, dkv kvValue, scope *scope) error {
|
|
||||||
if skv == nil || dkv == nil {
|
|
||||||
// TODO: add keys to stack to support really understandable error messages.
|
|
||||||
return fmt.Errorf("Unable to convert %#v to %#v", skv, dkv)
|
|
||||||
}
|
|
||||||
|
|
||||||
lister := dkv
|
|
||||||
if scope.flags.IsSet(SourceToDest) {
|
|
||||||
lister = skv
|
|
||||||
}
|
|
||||||
|
|
||||||
var mapping FieldMappingFunc
|
|
||||||
if scope.meta != nil && scope.meta.KeyNameMapping != nil {
|
|
||||||
mapping = scope.meta.KeyNameMapping
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, key := range lister.keys() {
|
|
||||||
if found, err := c.checkField(key, skv, dkv, scope); found {
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
stag := skv.tagOf(key)
|
|
||||||
dtag := dkv.tagOf(key)
|
|
||||||
skey := key
|
|
||||||
dkey := key
|
|
||||||
if mapping != nil {
|
|
||||||
skey, dkey = scope.meta.KeyNameMapping(key, stag, dtag)
|
|
||||||
}
|
|
||||||
|
|
||||||
df := dkv.value(dkey)
|
|
||||||
sf := skv.value(skey)
|
|
||||||
if !df.IsValid() || !sf.IsValid() {
|
|
||||||
switch {
|
|
||||||
case scope.flags.IsSet(IgnoreMissingFields):
|
|
||||||
// No error.
|
|
||||||
case scope.flags.IsSet(SourceToDest):
|
|
||||||
return scope.errorf("%v not present in dest", dkey)
|
|
||||||
default:
|
|
||||||
return scope.errorf("%v not present in src", skey)
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
scope.srcStack.top().key = skey
|
|
||||||
scope.srcStack.top().tag = stag
|
|
||||||
scope.destStack.top().key = dkey
|
|
||||||
scope.destStack.top().tag = dtag
|
|
||||||
if err := c.convert(sf, df, scope); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// checkField returns true if the field name matches any of the struct
|
|
||||||
// field copying rules. The error should be ignored if it returns false.
|
|
||||||
func (c *Converter) checkField(fieldName string, skv, dkv kvValue, scope *scope) (bool, error) {
|
|
||||||
replacementMade := false
|
|
||||||
if scope.flags.IsSet(DestFromSource) {
|
|
||||||
df := dkv.value(fieldName)
|
|
||||||
if !df.IsValid() {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
destKey := typeNamePair{df.Type(), fieldName}
|
|
||||||
// Check each of the potential source (type, name) pairs to see if they're
|
|
||||||
// present in sv.
|
|
||||||
for _, potentialSourceKey := range c.structFieldSources[destKey] {
|
|
||||||
sf := skv.value(potentialSourceKey.fieldName)
|
|
||||||
if !sf.IsValid() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if sf.Type() == potentialSourceKey.fieldType {
|
|
||||||
// Both the source's name and type matched, so copy.
|
|
||||||
scope.srcStack.top().key = potentialSourceKey.fieldName
|
|
||||||
scope.destStack.top().key = fieldName
|
|
||||||
if err := c.convert(sf, df, scope); err != nil {
|
|
||||||
return true, err
|
|
||||||
}
|
|
||||||
dkv.confirmSet(fieldName, df)
|
|
||||||
replacementMade = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return replacementMade, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
sf := skv.value(fieldName)
|
|
||||||
if !sf.IsValid() {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
srcKey := typeNamePair{sf.Type(), fieldName}
|
|
||||||
// Check each of the potential dest (type, name) pairs to see if they're
|
|
||||||
// present in dv.
|
|
||||||
for _, potentialDestKey := range c.structFieldDests[srcKey] {
|
|
||||||
df := dkv.value(potentialDestKey.fieldName)
|
|
||||||
if !df.IsValid() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if df.Type() == potentialDestKey.fieldType {
|
|
||||||
// Both the dest's name and type matched, so copy.
|
|
||||||
scope.srcStack.top().key = fieldName
|
|
||||||
scope.destStack.top().key = potentialDestKey.fieldName
|
|
||||||
if err := c.convert(sf, df, scope); err != nil {
|
|
||||||
return true, err
|
|
||||||
}
|
|
||||||
dkv.confirmSet(potentialDestKey.fieldName, df)
|
|
||||||
replacementMade = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return replacementMade, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,25 +141,6 @@ func Equals(labels1, labels2 Set) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// AreLabelsInWhiteList verifies if the provided label list
|
|
||||||
// is in the provided whitelist and returns true, otherwise false.
|
|
||||||
func AreLabelsInWhiteList(labels, whitelist Set) bool {
|
|
||||||
if len(whitelist) == 0 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
for k, v := range labels {
|
|
||||||
value, ok := whitelist[k]
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if value != v {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConvertSelectorToLabelsMap converts selector string to labels map
|
// ConvertSelectorToLabelsMap converts selector string to labels map
|
||||||
// and validates keys and values
|
// and validates keys and values
|
||||||
func ConvertSelectorToLabelsMap(selector string) (Set, error) {
|
func ConvertSelectorToLabelsMap(selector string) (Set, error) {
|
||||||
|
|
|
@ -263,11 +263,11 @@ func (r *Requirement) Values() sets.String {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty returns true if the internalSelector doesn't restrict selection space
|
// Empty returns true if the internalSelector doesn't restrict selection space
|
||||||
func (lsel internalSelector) Empty() bool {
|
func (s internalSelector) Empty() bool {
|
||||||
if lsel == nil {
|
if s == nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return len(lsel) == 0
|
return len(s) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// String returns a human-readable string that represents this
|
// String returns a human-readable string that represents this
|
||||||
|
@ -330,51 +330,51 @@ func safeSort(in []string) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add adds requirements to the selector. It copies the current selector returning a new one
|
// Add adds requirements to the selector. It copies the current selector returning a new one
|
||||||
func (lsel internalSelector) Add(reqs ...Requirement) Selector {
|
func (s internalSelector) Add(reqs ...Requirement) Selector {
|
||||||
var sel internalSelector
|
var ret internalSelector
|
||||||
for ix := range lsel {
|
for ix := range s {
|
||||||
sel = append(sel, lsel[ix])
|
ret = append(ret, s[ix])
|
||||||
}
|
}
|
||||||
for _, r := range reqs {
|
for _, r := range reqs {
|
||||||
sel = append(sel, r)
|
ret = append(ret, r)
|
||||||
}
|
}
|
||||||
sort.Sort(ByKey(sel))
|
sort.Sort(ByKey(ret))
|
||||||
return sel
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
// Matches for a internalSelector returns true if all
|
// Matches for a internalSelector returns true if all
|
||||||
// its Requirements match the input Labels. If any
|
// its Requirements match the input Labels. If any
|
||||||
// Requirement does not match, false is returned.
|
// Requirement does not match, false is returned.
|
||||||
func (lsel internalSelector) Matches(l Labels) bool {
|
func (s internalSelector) Matches(l Labels) bool {
|
||||||
for ix := range lsel {
|
for ix := range s {
|
||||||
if matches := lsel[ix].Matches(l); !matches {
|
if matches := s[ix].Matches(l); !matches {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lsel internalSelector) Requirements() (Requirements, bool) { return Requirements(lsel), true }
|
func (s internalSelector) Requirements() (Requirements, bool) { return Requirements(s), true }
|
||||||
|
|
||||||
// String returns a comma-separated string of all
|
// String returns a comma-separated string of all
|
||||||
// the internalSelector Requirements' human-readable strings.
|
// the internalSelector Requirements' human-readable strings.
|
||||||
func (lsel internalSelector) String() string {
|
func (s internalSelector) String() string {
|
||||||
var reqs []string
|
var reqs []string
|
||||||
for ix := range lsel {
|
for ix := range s {
|
||||||
reqs = append(reqs, lsel[ix].String())
|
reqs = append(reqs, s[ix].String())
|
||||||
}
|
}
|
||||||
return strings.Join(reqs, ",")
|
return strings.Join(reqs, ",")
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequiresExactMatch introspect whether a given selector requires a single specific field
|
// RequiresExactMatch introspect whether a given selector requires a single specific field
|
||||||
// to be set, and if so returns the value it requires.
|
// to be set, and if so returns the value it requires.
|
||||||
func (lsel internalSelector) RequiresExactMatch(label string) (value string, found bool) {
|
func (s internalSelector) RequiresExactMatch(label string) (value string, found bool) {
|
||||||
for ix := range lsel {
|
for ix := range s {
|
||||||
if lsel[ix].key == label {
|
if s[ix].key == label {
|
||||||
switch lsel[ix].operator {
|
switch s[ix].operator {
|
||||||
case selection.Equals, selection.DoubleEquals, selection.In:
|
case selection.Equals, selection.DoubleEquals, selection.In:
|
||||||
if len(lsel[ix].strValues) == 1 {
|
if len(s[ix].strValues) == 1 {
|
||||||
return lsel[ix].strValues[0], true
|
return s[ix].strValues[0], true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "", false
|
return "", false
|
||||||
|
@ -789,12 +789,12 @@ func (p *Parser) parseIdentifiersList() (sets.String, error) {
|
||||||
// parseExactValue parses the only value for exact match style
|
// parseExactValue parses the only value for exact match style
|
||||||
func (p *Parser) parseExactValue() (sets.String, error) {
|
func (p *Parser) parseExactValue() (sets.String, error) {
|
||||||
s := sets.NewString()
|
s := sets.NewString()
|
||||||
tok, lit := p.lookahead(Values)
|
tok, _ := p.lookahead(Values)
|
||||||
if tok == EndOfStringToken || tok == CommaToken {
|
if tok == EndOfStringToken || tok == CommaToken {
|
||||||
s.Insert("")
|
s.Insert("")
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
tok, lit = p.consume(Values)
|
tok, lit := p.consume(Values)
|
||||||
if tok == IdentifierToken {
|
if tok == IdentifierToken {
|
||||||
s.Insert(lit)
|
s.Insert(lit)
|
||||||
return s, nil
|
return s, nil
|
||||||
|
|
|
@ -186,6 +186,9 @@ func fromUnstructured(sv, dv reflect.Value) error {
|
||||||
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||||
dv.Set(sv.Convert(dt))
|
dv.Set(sv.Convert(dt))
|
||||||
return nil
|
return nil
|
||||||
|
case reflect.Float32, reflect.Float64:
|
||||||
|
dv.Set(sv.Convert(dt))
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
case reflect.Float32, reflect.Float64:
|
case reflect.Float32, reflect.Float64:
|
||||||
switch dt.Kind() {
|
switch dt.Kind() {
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
syntax = 'proto2';
|
syntax = "proto2";
|
||||||
|
|
||||||
package k8s.io.apimachinery.pkg.runtime;
|
package k8s.io.apimachinery.pkg.runtime;
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ type Encoder interface {
|
||||||
// Identifiers of two different encoders should be equal if and only if for every input
|
// Identifiers of two different encoders should be equal if and only if for every input
|
||||||
// object it will be encoded to the same representation by both of them.
|
// object it will be encoded to the same representation by both of them.
|
||||||
//
|
//
|
||||||
// Identifier is inteted for use with CacheableObject#CacheEncode method. In order to
|
// Identifier is intended for use with CacheableObject#CacheEncode method. In order to
|
||||||
// correctly handle CacheableObject, Encode() method should look similar to below, where
|
// correctly handle CacheableObject, Encode() method should look similar to below, where
|
||||||
// doEncode() is the encoding logic of implemented encoder:
|
// doEncode() is the encoding logic of implemented encoder:
|
||||||
// func (e *MyEncoder) Encode(obj Object, w io.Writer) error {
|
// func (e *MyEncoder) Encode(obj Object, w io.Writer) error {
|
||||||
|
|
|
@ -92,39 +92,6 @@ func NewClientNegotiator(serializer NegotiatedSerializer, gv schema.GroupVersion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewInternalClientNegotiator applies the default client rules for connecting to a Kubernetes apiserver
|
|
||||||
// where objects are converted to gv prior to sending and decoded to their internal representation prior
|
|
||||||
// to retrieval.
|
|
||||||
//
|
|
||||||
// DEPRECATED: Internal clients are deprecated and will be removed in a future Kubernetes release.
|
|
||||||
func NewInternalClientNegotiator(serializer NegotiatedSerializer, gv schema.GroupVersion) ClientNegotiator {
|
|
||||||
decode := schema.GroupVersions{
|
|
||||||
{
|
|
||||||
Group: gv.Group,
|
|
||||||
Version: APIVersionInternal,
|
|
||||||
},
|
|
||||||
// always include the legacy group as a decoding target to handle non-error `Status` return types
|
|
||||||
{
|
|
||||||
Group: "",
|
|
||||||
Version: APIVersionInternal,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return &clientNegotiator{
|
|
||||||
encode: gv,
|
|
||||||
decode: decode,
|
|
||||||
serializer: serializer,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSimpleClientNegotiator will negotiate for a single serializer. This should only be used
|
|
||||||
// for testing or when the caller is taking responsibility for setting the GVK on encoded objects.
|
|
||||||
func NewSimpleClientNegotiator(info SerializerInfo, gv schema.GroupVersion) ClientNegotiator {
|
|
||||||
return &clientNegotiator{
|
|
||||||
serializer: &simpleNegotiatedSerializer{info: info},
|
|
||||||
encode: gv,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type simpleNegotiatedSerializer struct {
|
type simpleNegotiatedSerializer struct {
|
||||||
info SerializerInfo
|
info SerializerInfo
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
syntax = 'proto2';
|
syntax = "proto2";
|
||||||
|
|
||||||
package k8s.io.apimachinery.pkg.runtime.schema;
|
package k8s.io.apimachinery.pkg.runtime.schema;
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ type ObjectKind interface {
|
||||||
// SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil
|
// SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil
|
||||||
// should clear the current setting.
|
// should clear the current setting.
|
||||||
SetGroupVersionKind(kind GroupVersionKind)
|
SetGroupVersionKind(kind GroupVersionKind)
|
||||||
// GroupVersionKind returns the stored group, version, and kind of an object, or nil if the object does
|
// GroupVersionKind returns the stored group, version, and kind of an object, or an empty struct
|
||||||
// not expose or provide these fields.
|
// if the object does not expose or provide these fields.
|
||||||
GroupVersionKind() GroupVersionKind
|
GroupVersionKind() GroupVersionKind
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ package runtime
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -105,9 +104,6 @@ func NewScheme() *Scheme {
|
||||||
// Enable couple default conversions by default.
|
// Enable couple default conversions by default.
|
||||||
utilruntime.Must(RegisterEmbeddedConversions(s))
|
utilruntime.Must(RegisterEmbeddedConversions(s))
|
||||||
utilruntime.Must(RegisterStringConversions(s))
|
utilruntime.Must(RegisterStringConversions(s))
|
||||||
|
|
||||||
utilruntime.Must(s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields))
|
|
||||||
utilruntime.Must(s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields))
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,11 +305,6 @@ func (s *Scheme) New(kind schema.GroupVersionKind) (Object, error) {
|
||||||
return nil, NewNotRegisteredErrForKind(s.schemeName, kind)
|
return nil, NewNotRegisteredErrForKind(s.schemeName, kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log sets a logger on the scheme. For test purposes only
|
|
||||||
func (s *Scheme) Log(l conversion.DebugLogger) {
|
|
||||||
s.converter.Debug = l
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddIgnoredConversionType identifies a pair of types that should be skipped by
|
// AddIgnoredConversionType identifies a pair of types that should be skipped by
|
||||||
// conversion (because the data inside them is explicitly dropped during
|
// conversion (because the data inside them is explicitly dropped during
|
||||||
// conversion).
|
// conversion).
|
||||||
|
@ -342,14 +333,6 @@ func (s *Scheme) AddFieldLabelConversionFunc(gvk schema.GroupVersionKind, conver
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterInputDefaults sets the provided field mapping function and field matching
|
|
||||||
// as the defaults for the provided input type. The fn may be nil, in which case no
|
|
||||||
// mapping will happen by default. Use this method to register a mechanism for handling
|
|
||||||
// a specific input type in conversion, such as a map[string]string to structs.
|
|
||||||
func (s *Scheme) RegisterInputDefaults(in interface{}, fn conversion.FieldMappingFunc, defaultFlags conversion.FieldMatchingFlags) error {
|
|
||||||
return s.converter.RegisterInputDefaults(in, fn, defaultFlags)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddTypeDefaultingFunc registers a function that is passed a pointer to an
|
// AddTypeDefaultingFunc registers a function that is passed a pointer to an
|
||||||
// object and can default fields on the object. These functions will be invoked
|
// object and can default fields on the object. These functions will be invoked
|
||||||
// when Default() is called. The function will never be called unless the
|
// when Default() is called. The function will never be called unless the
|
||||||
|
@ -433,12 +416,9 @@ func (s *Scheme) Convert(in, out interface{}, context interface{}) error {
|
||||||
in = typed
|
in = typed
|
||||||
}
|
}
|
||||||
|
|
||||||
flags, meta := s.generateConvertMeta(in)
|
meta := s.generateConvertMeta(in)
|
||||||
meta.Context = context
|
meta.Context = context
|
||||||
if flags == 0 {
|
return s.converter.Convert(in, out, meta)
|
||||||
flags = conversion.AllowDifferentFieldTypeNames
|
|
||||||
}
|
|
||||||
return s.converter.Convert(in, out, flags, meta)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConvertFieldLabel alters the given field label and value for an kind field selector from
|
// ConvertFieldLabel alters the given field label and value for an kind field selector from
|
||||||
|
@ -535,9 +515,9 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (
|
||||||
in = in.DeepCopyObject()
|
in = in.DeepCopyObject()
|
||||||
}
|
}
|
||||||
|
|
||||||
flags, meta := s.generateConvertMeta(in)
|
meta := s.generateConvertMeta(in)
|
||||||
meta.Context = target
|
meta.Context = target
|
||||||
if err := s.converter.Convert(in, out, flags, meta); err != nil {
|
if err := s.converter.Convert(in, out, meta); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,7 +545,7 @@ func (s *Scheme) unstructuredToTyped(in Unstructured) (Object, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateConvertMeta constructs the meta value we pass to Convert.
|
// generateConvertMeta constructs the meta value we pass to Convert.
|
||||||
func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFlags, *conversion.Meta) {
|
func (s *Scheme) generateConvertMeta(in interface{}) *conversion.Meta {
|
||||||
return s.converter.DefaultMeta(reflect.TypeOf(in))
|
return s.converter.DefaultMeta(reflect.TypeOf(in))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,10 +108,9 @@ func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory, option
|
||||||
// CodecFactory provides methods for retrieving codecs and serializers for specific
|
// CodecFactory provides methods for retrieving codecs and serializers for specific
|
||||||
// versions and content types.
|
// versions and content types.
|
||||||
type CodecFactory struct {
|
type CodecFactory struct {
|
||||||
scheme *runtime.Scheme
|
scheme *runtime.Scheme
|
||||||
serializers []serializerType
|
universal runtime.Decoder
|
||||||
universal runtime.Decoder
|
accepts []runtime.SerializerInfo
|
||||||
accepts []runtime.SerializerInfo
|
|
||||||
|
|
||||||
legacySerializer runtime.Serializer
|
legacySerializer runtime.Serializer
|
||||||
}
|
}
|
||||||
|
@ -216,9 +215,8 @@ func newCodecFactory(scheme *runtime.Scheme, serializers []serializerType) Codec
|
||||||
}
|
}
|
||||||
|
|
||||||
return CodecFactory{
|
return CodecFactory{
|
||||||
scheme: scheme,
|
scheme: scheme,
|
||||||
serializers: serializers,
|
universal: recognizer.NewDecoder(decoders...),
|
||||||
universal: recognizer.NewDecoder(decoders...),
|
|
||||||
|
|
||||||
accepts: accepts,
|
accepts: accepts,
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,7 @@ type SerializerOptions struct {
|
||||||
Strict bool
|
Strict bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Serializer handles encoding versioned objects into the proper JSON form
|
||||||
type Serializer struct {
|
type Serializer struct {
|
||||||
meta MetaFactory
|
meta MetaFactory
|
||||||
options SerializerOptions
|
options SerializerOptions
|
||||||
|
@ -144,10 +145,10 @@ func (customNumberDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CaseSensitiveJsonIterator returns a jsoniterator API that's configured to be
|
// CaseSensitiveJSONIterator returns a jsoniterator API that's configured to be
|
||||||
// case-sensitive when unmarshalling, and otherwise compatible with
|
// case-sensitive when unmarshalling, and otherwise compatible with
|
||||||
// the encoding/json standard library.
|
// the encoding/json standard library.
|
||||||
func CaseSensitiveJsonIterator() jsoniter.API {
|
func CaseSensitiveJSONIterator() jsoniter.API {
|
||||||
config := jsoniter.Config{
|
config := jsoniter.Config{
|
||||||
EscapeHTML: true,
|
EscapeHTML: true,
|
||||||
SortMapKeys: true,
|
SortMapKeys: true,
|
||||||
|
@ -159,10 +160,10 @@ func CaseSensitiveJsonIterator() jsoniter.API {
|
||||||
return config
|
return config
|
||||||
}
|
}
|
||||||
|
|
||||||
// StrictCaseSensitiveJsonIterator returns a jsoniterator API that's configured to be
|
// StrictCaseSensitiveJSONIterator returns a jsoniterator API that's configured to be
|
||||||
// case-sensitive, but also disallows unknown fields when unmarshalling. It is compatible with
|
// case-sensitive, but also disallows unknown fields when unmarshalling. It is compatible with
|
||||||
// the encoding/json standard library.
|
// the encoding/json standard library.
|
||||||
func StrictCaseSensitiveJsonIterator() jsoniter.API {
|
func StrictCaseSensitiveJSONIterator() jsoniter.API {
|
||||||
config := jsoniter.Config{
|
config := jsoniter.Config{
|
||||||
EscapeHTML: true,
|
EscapeHTML: true,
|
||||||
SortMapKeys: true,
|
SortMapKeys: true,
|
||||||
|
@ -179,8 +180,8 @@ func StrictCaseSensitiveJsonIterator() jsoniter.API {
|
||||||
// from outside. Still does not protect from package level jsoniter.Register*() functions - someone calling them
|
// from outside. Still does not protect from package level jsoniter.Register*() functions - someone calling them
|
||||||
// in some other library will mess with every usage of the jsoniter library in the whole program.
|
// in some other library will mess with every usage of the jsoniter library in the whole program.
|
||||||
// See https://github.com/json-iterator/go/issues/265
|
// See https://github.com/json-iterator/go/issues/265
|
||||||
var caseSensitiveJsonIterator = CaseSensitiveJsonIterator()
|
var caseSensitiveJSONIterator = CaseSensitiveJSONIterator()
|
||||||
var strictCaseSensitiveJsonIterator = StrictCaseSensitiveJsonIterator()
|
var strictCaseSensitiveJSONIterator = StrictCaseSensitiveJSONIterator()
|
||||||
|
|
||||||
// gvkWithDefaults returns group kind and version defaulting from provided default
|
// gvkWithDefaults returns group kind and version defaulting from provided default
|
||||||
func gvkWithDefaults(actual, defaultGVK schema.GroupVersionKind) schema.GroupVersionKind {
|
func gvkWithDefaults(actual, defaultGVK schema.GroupVersionKind) schema.GroupVersionKind {
|
||||||
|
@ -236,7 +237,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i
|
||||||
types, _, err := s.typer.ObjectKinds(into)
|
types, _, err := s.typer.ObjectKinds(into)
|
||||||
switch {
|
switch {
|
||||||
case runtime.IsNotRegisteredError(err), isUnstructured:
|
case runtime.IsNotRegisteredError(err), isUnstructured:
|
||||||
if err := caseSensitiveJsonIterator.Unmarshal(data, into); err != nil {
|
if err := caseSensitiveJSONIterator.Unmarshal(data, into); err != nil {
|
||||||
return nil, actual, err
|
return nil, actual, err
|
||||||
}
|
}
|
||||||
return into, actual, nil
|
return into, actual, nil
|
||||||
|
@ -260,7 +261,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i
|
||||||
return nil, actual, err
|
return nil, actual, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := caseSensitiveJsonIterator.Unmarshal(data, obj); err != nil {
|
if err := caseSensitiveJSONIterator.Unmarshal(data, obj); err != nil {
|
||||||
return nil, actual, err
|
return nil, actual, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,7 +286,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i
|
||||||
// due to that a matching field doesn't exist in the object. hence we can return a typed strictDecoderError,
|
// due to that a matching field doesn't exist in the object. hence we can return a typed strictDecoderError,
|
||||||
// the actual error is that the object contains unknown field.
|
// the actual error is that the object contains unknown field.
|
||||||
strictObj := obj.DeepCopyObject()
|
strictObj := obj.DeepCopyObject()
|
||||||
if err := strictCaseSensitiveJsonIterator.Unmarshal(altered, strictObj); err != nil {
|
if err := strictCaseSensitiveJSONIterator.Unmarshal(altered, strictObj); err != nil {
|
||||||
return nil, actual, runtime.NewStrictDecodingError(err.Error(), string(originalData))
|
return nil, actual, runtime.NewStrictDecodingError(err.Error(), string(originalData))
|
||||||
}
|
}
|
||||||
// Always return the same object as the non-strict serializer to avoid any deviations.
|
// Always return the same object as the non-strict serializer to avoid any deviations.
|
||||||
|
@ -302,7 +303,7 @@ func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error {
|
||||||
|
|
||||||
func (s *Serializer) doEncode(obj runtime.Object, w io.Writer) error {
|
func (s *Serializer) doEncode(obj runtime.Object, w io.Writer) error {
|
||||||
if s.options.Yaml {
|
if s.options.Yaml {
|
||||||
json, err := caseSensitiveJsonIterator.Marshal(obj)
|
json, err := caseSensitiveJSONIterator.Marshal(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -315,7 +316,7 @@ func (s *Serializer) doEncode(obj runtime.Object, w io.Writer) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.options.Pretty {
|
if s.options.Pretty {
|
||||||
data, err := caseSensitiveJsonIterator.MarshalIndent(obj, "", " ")
|
data, err := caseSensitiveJSONIterator.MarshalIndent(obj, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,7 @@ func (e errNotMarshalable) Status() metav1.Status {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsNotMarshalable checks the type of error, returns a boolean true if error is not nil and not marshalable false otherwise
|
||||||
func IsNotMarshalable(err error) bool {
|
func IsNotMarshalable(err error) bool {
|
||||||
_, ok := err.(errNotMarshalable)
|
_, ok := err.(errNotMarshalable)
|
||||||
return err != nil && ok
|
return err != nil && ok
|
||||||
|
@ -77,6 +78,7 @@ func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper) *Se
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Serializer handles encoding versioned objects into the proper wire form
|
||||||
type Serializer struct {
|
type Serializer struct {
|
||||||
prefix []byte
|
prefix []byte
|
||||||
creater runtime.ObjectCreater
|
creater runtime.ObjectCreater
|
||||||
|
@ -457,8 +459,10 @@ func (s *RawSerializer) Identifier() runtime.Identifier {
|
||||||
return rawSerializerIdentifier
|
return rawSerializerIdentifier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LengthDelimitedFramer is exported variable of type lengthDelimitedFramer
|
||||||
var LengthDelimitedFramer = lengthDelimitedFramer{}
|
var LengthDelimitedFramer = lengthDelimitedFramer{}
|
||||||
|
|
||||||
|
// Provides length delimited frame reader and writer methods
|
||||||
type lengthDelimitedFramer struct{}
|
type lengthDelimitedFramer struct{}
|
||||||
|
|
||||||
// NewFrameWriter implements stream framing for this serializer
|
// NewFrameWriter implements stream framing for this serializer
|
||||||
|
|
|
@ -16,10 +16,6 @@ limitations under the License.
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NamespacedName comprises a resource name, with a mandatory namespace,
|
// NamespacedName comprises a resource name, with a mandatory namespace,
|
||||||
// rendered as "<namespace>/<name>". Being a type captures intent and
|
// rendered as "<namespace>/<name>". Being a type captures intent and
|
||||||
// helps make sure that UIDs, namespaced names and non-namespaced names
|
// helps make sure that UIDs, namespaced names and non-namespaced names
|
||||||
|
@ -39,5 +35,5 @@ const (
|
||||||
|
|
||||||
// String returns the general purpose string representation
|
// String returns the general purpose string representation
|
||||||
func (n NamespacedName) String() string {
|
func (n NamespacedName) String() string {
|
||||||
return fmt.Sprintf("%s%c%s", n.Namespace, Separator, n.Name)
|
return n.Namespace + string(Separator) + n.Name
|
||||||
}
|
}
|
||||||
|
|
|
@ -348,7 +348,13 @@ func (f *fakeTimer) Stop() bool {
|
||||||
// Reset conditionally updates the firing time of the timer. If the
|
// Reset conditionally updates the firing time of the timer. If the
|
||||||
// timer has neither fired nor been stopped then this call resets the
|
// timer has neither fired nor been stopped then this call resets the
|
||||||
// timer to the fake clock's "now" + d and returns true, otherwise
|
// timer to the fake clock's "now" + d and returns true, otherwise
|
||||||
// this call returns false. This is like time.Timer::Reset.
|
// it creates a new waiter, adds it to the clock, and returns true.
|
||||||
|
//
|
||||||
|
// It is not possible to return false, because a fake timer can be reset
|
||||||
|
// from any state (waiting to fire, already fired, and stopped).
|
||||||
|
//
|
||||||
|
// See the GoDoc for time.Timer::Reset for more context on why
|
||||||
|
// the return value of Reset() is not useful.
|
||||||
func (f *fakeTimer) Reset(d time.Duration) bool {
|
func (f *fakeTimer) Reset(d time.Duration) bool {
|
||||||
f.fakeClock.lock.Lock()
|
f.fakeClock.lock.Lock()
|
||||||
defer f.fakeClock.lock.Unlock()
|
defer f.fakeClock.lock.Unlock()
|
||||||
|
@ -360,7 +366,15 @@ func (f *fakeTimer) Reset(d time.Duration) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
// No existing waiter, timer has already fired or been reset.
|
||||||
|
// We should still enable Reset() to succeed by creating a
|
||||||
|
// new waiter and adding it to the clock's waiters.
|
||||||
|
newWaiter := fakeClockWaiter{
|
||||||
|
targetTime: f.fakeClock.time.Add(d),
|
||||||
|
destChan: seekChan,
|
||||||
|
}
|
||||||
|
f.fakeClock.waiters = append(f.fakeClock.waiters, newWaiter)
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ticker defines the Ticker interface
|
// Ticker defines the Ticker interface
|
||||||
|
|
|
@ -163,7 +163,7 @@ func matchesError(err error, fns ...Matcher) bool {
|
||||||
|
|
||||||
// filterErrors returns any errors (or nested errors, if the list contains
|
// filterErrors returns any errors (or nested errors, if the list contains
|
||||||
// nested Errors) for which all fns return false. If no errors
|
// nested Errors) for which all fns return false. If no errors
|
||||||
// remain a nil list is returned. The resulting silec will have all
|
// remain a nil list is returned. The resulting slice will have all
|
||||||
// nested slices flattened as a side effect.
|
// nested slices flattened as a side effect.
|
||||||
func filterErrors(list []error, fns ...Matcher) []error {
|
func filterErrors(list []error, fns ...Matcher) []error {
|
||||||
result := []error{}
|
result := []error{}
|
||||||
|
|
|
@ -132,12 +132,14 @@ func (r *jsonFrameReader) Read(data []byte) (int, error) {
|
||||||
// Return whatever remaining data exists from an in progress frame
|
// Return whatever remaining data exists from an in progress frame
|
||||||
if n := len(r.remaining); n > 0 {
|
if n := len(r.remaining); n > 0 {
|
||||||
if n <= len(data) {
|
if n <= len(data) {
|
||||||
|
//lint:ignore SA4006,SA4010 underlying array of data is modified here.
|
||||||
data = append(data[0:0], r.remaining...)
|
data = append(data[0:0], r.remaining...)
|
||||||
r.remaining = nil
|
r.remaining = nil
|
||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
n = len(data)
|
n = len(data)
|
||||||
|
//lint:ignore SA4006,SA4010 underlying array of data is modified here.
|
||||||
data = append(data[0:0], r.remaining[:n]...)
|
data = append(data[0:0], r.remaining[:n]...)
|
||||||
r.remaining = r.remaining[n:]
|
r.remaining = r.remaining[n:]
|
||||||
return n, io.ErrShortBuffer
|
return n, io.ErrShortBuffer
|
||||||
|
@ -155,6 +157,7 @@ func (r *jsonFrameReader) Read(data []byte) (int, error) {
|
||||||
// and set m to it, which means we need to copy the partial result back into data and preserve
|
// and set m to it, which means we need to copy the partial result back into data and preserve
|
||||||
// the remaining result for subsequent reads.
|
// the remaining result for subsequent reads.
|
||||||
if len(m) > n {
|
if len(m) > n {
|
||||||
|
//lint:ignore SA4006,SA4010 underlying array of data is modified here.
|
||||||
data = append(data[0:0], m[:n]...)
|
data = append(data[0:0], m[:n]...)
|
||||||
r.remaining = m[n:]
|
r.remaining = m[n:]
|
||||||
return n, io.ErrShortBuffer
|
return n, io.ErrShortBuffer
|
||||||
|
|
|
@ -34,38 +34,62 @@ type connection struct {
|
||||||
streams []httpstream.Stream
|
streams []httpstream.Stream
|
||||||
streamLock sync.Mutex
|
streamLock sync.Mutex
|
||||||
newStreamHandler httpstream.NewStreamHandler
|
newStreamHandler httpstream.NewStreamHandler
|
||||||
|
ping func() (time.Duration, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewClientConnection creates a new SPDY client connection.
|
// NewClientConnection creates a new SPDY client connection.
|
||||||
func NewClientConnection(conn net.Conn) (httpstream.Connection, error) {
|
func NewClientConnection(conn net.Conn) (httpstream.Connection, error) {
|
||||||
|
return NewClientConnectionWithPings(conn, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewClientConnectionWithPings creates a new SPDY client connection.
|
||||||
|
//
|
||||||
|
// If pingPeriod is non-zero, a background goroutine will send periodic Ping
|
||||||
|
// frames to the server. Use this to keep idle connections through certain load
|
||||||
|
// balancers alive longer.
|
||||||
|
func NewClientConnectionWithPings(conn net.Conn, pingPeriod time.Duration) (httpstream.Connection, error) {
|
||||||
spdyConn, err := spdystream.NewConnection(conn, false)
|
spdyConn, err := spdystream.NewConnection(conn, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return newConnection(spdyConn, httpstream.NoOpNewStreamHandler), nil
|
return newConnection(spdyConn, httpstream.NoOpNewStreamHandler, pingPeriod, spdyConn.Ping), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewServerConnection creates a new SPDY server connection. newStreamHandler
|
// NewServerConnection creates a new SPDY server connection. newStreamHandler
|
||||||
// will be invoked when the server receives a newly created stream from the
|
// will be invoked when the server receives a newly created stream from the
|
||||||
// client.
|
// client.
|
||||||
func NewServerConnection(conn net.Conn, newStreamHandler httpstream.NewStreamHandler) (httpstream.Connection, error) {
|
func NewServerConnection(conn net.Conn, newStreamHandler httpstream.NewStreamHandler) (httpstream.Connection, error) {
|
||||||
|
return NewServerConnectionWithPings(conn, newStreamHandler, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewServerConnectionWithPings creates a new SPDY server connection.
|
||||||
|
// newStreamHandler will be invoked when the server receives a newly created
|
||||||
|
// stream from the client.
|
||||||
|
//
|
||||||
|
// If pingPeriod is non-zero, a background goroutine will send periodic Ping
|
||||||
|
// frames to the server. Use this to keep idle connections through certain load
|
||||||
|
// balancers alive longer.
|
||||||
|
func NewServerConnectionWithPings(conn net.Conn, newStreamHandler httpstream.NewStreamHandler, pingPeriod time.Duration) (httpstream.Connection, error) {
|
||||||
spdyConn, err := spdystream.NewConnection(conn, true)
|
spdyConn, err := spdystream.NewConnection(conn, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return newConnection(spdyConn, newStreamHandler), nil
|
return newConnection(spdyConn, newStreamHandler, pingPeriod, spdyConn.Ping), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// newConnection returns a new connection wrapping conn. newStreamHandler
|
// newConnection returns a new connection wrapping conn. newStreamHandler
|
||||||
// will be invoked when the server receives a newly created stream from the
|
// will be invoked when the server receives a newly created stream from the
|
||||||
// client.
|
// client.
|
||||||
func newConnection(conn *spdystream.Connection, newStreamHandler httpstream.NewStreamHandler) httpstream.Connection {
|
func newConnection(conn *spdystream.Connection, newStreamHandler httpstream.NewStreamHandler, pingPeriod time.Duration, pingFn func() (time.Duration, error)) httpstream.Connection {
|
||||||
c := &connection{conn: conn, newStreamHandler: newStreamHandler}
|
c := &connection{conn: conn, newStreamHandler: newStreamHandler, ping: pingFn}
|
||||||
go conn.Serve(c.newSpdyStream)
|
go conn.Serve(c.newSpdyStream)
|
||||||
|
if pingPeriod > 0 && pingFn != nil {
|
||||||
|
go c.sendPings(pingPeriod)
|
||||||
|
}
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,3 +167,21 @@ func (c *connection) newSpdyStream(stream *spdystream.Stream) {
|
||||||
func (c *connection) SetIdleTimeout(timeout time.Duration) {
|
func (c *connection) SetIdleTimeout(timeout time.Duration) {
|
||||||
c.conn.SetIdleTimeout(timeout)
|
c.conn.SetIdleTimeout(timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *connection) sendPings(period time.Duration) {
|
||||||
|
t := time.NewTicker(period)
|
||||||
|
defer t.Stop()
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-c.conn.CloseChan():
|
||||||
|
return
|
||||||
|
case <-t.C:
|
||||||
|
}
|
||||||
|
if _, err := c.ping(); err != nil {
|
||||||
|
klog.V(3).Infof("SPDY Ping failed: %v", err)
|
||||||
|
// Continue, in case this is a transient failure.
|
||||||
|
// c.conn.CloseChan above will tell us when the connection is
|
||||||
|
// actually closed.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import (
|
||||||
"net/http/httputil"
|
"net/http/httputil"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
@ -70,6 +71,9 @@ type SpdyRoundTripper struct {
|
||||||
// requireSameHostRedirects restricts redirect following to only follow redirects to the same host
|
// requireSameHostRedirects restricts redirect following to only follow redirects to the same host
|
||||||
// as the original request.
|
// as the original request.
|
||||||
requireSameHostRedirects bool
|
requireSameHostRedirects bool
|
||||||
|
// pingPeriod is a period for sending Ping frames over established
|
||||||
|
// connections.
|
||||||
|
pingPeriod time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ utilnet.TLSClientConfigHolder = &SpdyRoundTripper{}
|
var _ utilnet.TLSClientConfigHolder = &SpdyRoundTripper{}
|
||||||
|
@ -79,18 +83,51 @@ var _ utilnet.Dialer = &SpdyRoundTripper{}
|
||||||
// NewRoundTripper creates a new SpdyRoundTripper that will use the specified
|
// NewRoundTripper creates a new SpdyRoundTripper that will use the specified
|
||||||
// tlsConfig.
|
// tlsConfig.
|
||||||
func NewRoundTripper(tlsConfig *tls.Config, followRedirects, requireSameHostRedirects bool) *SpdyRoundTripper {
|
func NewRoundTripper(tlsConfig *tls.Config, followRedirects, requireSameHostRedirects bool) *SpdyRoundTripper {
|
||||||
return NewRoundTripperWithProxy(tlsConfig, followRedirects, requireSameHostRedirects, utilnet.NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment))
|
return NewRoundTripperWithConfig(RoundTripperConfig{
|
||||||
|
TLS: tlsConfig,
|
||||||
|
FollowRedirects: followRedirects,
|
||||||
|
RequireSameHostRedirects: requireSameHostRedirects,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRoundTripperWithProxy creates a new SpdyRoundTripper that will use the
|
// NewRoundTripperWithProxy creates a new SpdyRoundTripper that will use the
|
||||||
// specified tlsConfig and proxy func.
|
// specified tlsConfig and proxy func.
|
||||||
func NewRoundTripperWithProxy(tlsConfig *tls.Config, followRedirects, requireSameHostRedirects bool, proxier func(*http.Request) (*url.URL, error)) *SpdyRoundTripper {
|
func NewRoundTripperWithProxy(tlsConfig *tls.Config, followRedirects, requireSameHostRedirects bool, proxier func(*http.Request) (*url.URL, error)) *SpdyRoundTripper {
|
||||||
return &SpdyRoundTripper{
|
return NewRoundTripperWithConfig(RoundTripperConfig{
|
||||||
tlsConfig: tlsConfig,
|
TLS: tlsConfig,
|
||||||
followRedirects: followRedirects,
|
FollowRedirects: followRedirects,
|
||||||
requireSameHostRedirects: requireSameHostRedirects,
|
RequireSameHostRedirects: requireSameHostRedirects,
|
||||||
proxier: proxier,
|
Proxier: proxier,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRoundTripperWithProxy creates a new SpdyRoundTripper with the specified
|
||||||
|
// configuration.
|
||||||
|
func NewRoundTripperWithConfig(cfg RoundTripperConfig) *SpdyRoundTripper {
|
||||||
|
if cfg.Proxier == nil {
|
||||||
|
cfg.Proxier = utilnet.NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment)
|
||||||
}
|
}
|
||||||
|
return &SpdyRoundTripper{
|
||||||
|
tlsConfig: cfg.TLS,
|
||||||
|
followRedirects: cfg.FollowRedirects,
|
||||||
|
requireSameHostRedirects: cfg.RequireSameHostRedirects,
|
||||||
|
proxier: cfg.Proxier,
|
||||||
|
pingPeriod: cfg.PingPeriod,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RoundTripperConfig is a set of options for an SpdyRoundTripper.
|
||||||
|
type RoundTripperConfig struct {
|
||||||
|
// TLS configuration used by the round tripper.
|
||||||
|
TLS *tls.Config
|
||||||
|
// Proxier is a proxy function invoked on each request. Optional.
|
||||||
|
Proxier func(*http.Request) (*url.URL, error)
|
||||||
|
// PingPeriod is a period for sending SPDY Pings on the connection.
|
||||||
|
// Optional.
|
||||||
|
PingPeriod time.Duration
|
||||||
|
|
||||||
|
FollowRedirects bool
|
||||||
|
RequireSameHostRedirects bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// TLSClientConfig implements pkg/util/net.TLSClientConfigHolder for proper TLS checking during
|
// TLSClientConfig implements pkg/util/net.TLSClientConfigHolder for proper TLS checking during
|
||||||
|
@ -316,7 +353,7 @@ func (s *SpdyRoundTripper) NewConnection(resp *http.Response) (httpstream.Connec
|
||||||
return nil, fmt.Errorf("unable to upgrade connection: %s", responseError)
|
return nil, fmt.Errorf("unable to upgrade connection: %s", responseError)
|
||||||
}
|
}
|
||||||
|
|
||||||
return NewClientConnection(s.conn)
|
return NewClientConnectionWithPings(s.conn, s.pingPeriod)
|
||||||
}
|
}
|
||||||
|
|
||||||
// statusScheme is private scheme for the decoding here until someone fixes the TODO in NewConnection
|
// statusScheme is private scheme for the decoding here until someone fixes the TODO in NewConnection
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/httpstream"
|
"k8s.io/apimachinery/pkg/util/httpstream"
|
||||||
"k8s.io/apimachinery/pkg/util/runtime"
|
"k8s.io/apimachinery/pkg/util/runtime"
|
||||||
|
@ -34,6 +35,7 @@ const HeaderSpdy31 = "SPDY/3.1"
|
||||||
// responseUpgrader knows how to upgrade HTTP responses. It
|
// responseUpgrader knows how to upgrade HTTP responses. It
|
||||||
// implements the httpstream.ResponseUpgrader interface.
|
// implements the httpstream.ResponseUpgrader interface.
|
||||||
type responseUpgrader struct {
|
type responseUpgrader struct {
|
||||||
|
pingPeriod time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
// connWrapper is used to wrap a hijacked connection and its bufio.Reader. All
|
// connWrapper is used to wrap a hijacked connection and its bufio.Reader. All
|
||||||
|
@ -64,7 +66,18 @@ func (w *connWrapper) Close() error {
|
||||||
// capable of upgrading HTTP responses using SPDY/3.1 via the
|
// capable of upgrading HTTP responses using SPDY/3.1 via the
|
||||||
// spdystream package.
|
// spdystream package.
|
||||||
func NewResponseUpgrader() httpstream.ResponseUpgrader {
|
func NewResponseUpgrader() httpstream.ResponseUpgrader {
|
||||||
return responseUpgrader{}
|
return NewResponseUpgraderWithPings(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewResponseUpgraderWithPings returns a new httpstream.ResponseUpgrader that
|
||||||
|
// is capable of upgrading HTTP responses using SPDY/3.1 via the spdystream
|
||||||
|
// package.
|
||||||
|
//
|
||||||
|
// If pingPeriod is non-zero, for each incoming connection a background
|
||||||
|
// goroutine will send periodic Ping frames to the server. Use this to keep
|
||||||
|
// idle connections through certain load balancers alive longer.
|
||||||
|
func NewResponseUpgraderWithPings(pingPeriod time.Duration) httpstream.ResponseUpgrader {
|
||||||
|
return responseUpgrader{pingPeriod: pingPeriod}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpgradeResponse upgrades an HTTP response to one that supports multiplexed
|
// UpgradeResponse upgrades an HTTP response to one that supports multiplexed
|
||||||
|
@ -97,7 +110,7 @@ func (u responseUpgrader) UpgradeResponse(w http.ResponseWriter, req *http.Reque
|
||||||
}
|
}
|
||||||
|
|
||||||
connWithBuf := &connWrapper{Conn: conn, bufReader: bufrw.Reader}
|
connWithBuf := &connWrapper{Conn: conn, bufReader: bufrw.Reader}
|
||||||
spdyConn, err := NewServerConnection(connWithBuf, newStreamHandler)
|
spdyConn, err := NewServerConnectionWithPings(connWithBuf, newStreamHandler, u.pingPeriod)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
runtime.HandleError(fmt.Errorf("unable to upgrade: error creating SPDY server connection: %v", err))
|
runtime.HandleError(fmt.Errorf("unable to upgrade: error creating SPDY server connection: %v", err))
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
syntax = 'proto2';
|
syntax = "proto2";
|
||||||
|
|
||||||
package k8s.io.apimachinery.pkg.util.intstr;
|
package k8s.io.apimachinery.pkg.util.intstr;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
// +build !notest
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package intstr
|
||||||
|
|
||||||
|
import (
|
||||||
|
fuzz "github.com/google/gofuzz"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fuzz satisfies fuzz.Interface
|
||||||
|
func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
|
||||||
|
if intstr == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if c.RandBool() {
|
||||||
|
intstr.Type = Int
|
||||||
|
c.Fuzz(&intstr.IntVal)
|
||||||
|
intstr.StrVal = ""
|
||||||
|
} else {
|
||||||
|
intstr.Type = String
|
||||||
|
intstr.IntVal = 0
|
||||||
|
c.Fuzz(&intstr.StrVal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ensure IntOrString implements fuzz.Interface
|
||||||
|
var _ fuzz.Interface = &IntOrString{}
|
|
@ -25,7 +25,6 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/google/gofuzz"
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -90,6 +89,9 @@ func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
|
||||||
|
|
||||||
// String returns the string value, or the Itoa of the int value.
|
// String returns the string value, or the Itoa of the int value.
|
||||||
func (intstr *IntOrString) String() string {
|
func (intstr *IntOrString) String() string {
|
||||||
|
if intstr == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
if intstr.Type == String {
|
if intstr.Type == String {
|
||||||
return intstr.StrVal
|
return intstr.StrVal
|
||||||
}
|
}
|
||||||
|
@ -129,21 +131,6 @@ func (IntOrString) OpenAPISchemaType() []string { return []string{"string"} }
|
||||||
// the OpenAPI spec of this type.
|
// the OpenAPI spec of this type.
|
||||||
func (IntOrString) OpenAPISchemaFormat() string { return "int-or-string" }
|
func (IntOrString) OpenAPISchemaFormat() string { return "int-or-string" }
|
||||||
|
|
||||||
func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
|
|
||||||
if intstr == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if c.RandBool() {
|
|
||||||
intstr.Type = Int
|
|
||||||
c.Fuzz(&intstr.IntVal)
|
|
||||||
intstr.StrVal = ""
|
|
||||||
} else {
|
|
||||||
intstr.Type = String
|
|
||||||
intstr.IntVal = 0
|
|
||||||
c.Fuzz(&intstr.StrVal)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ValueOrDefault(intOrPercent *IntOrString, defaultValue IntOrString) *IntOrString {
|
func ValueOrDefault(intOrPercent *IntOrString, defaultValue IntOrString) *IntOrString {
|
||||||
if intOrPercent == nil {
|
if intOrPercent == nil {
|
||||||
return &defaultValue
|
return &defaultValue
|
||||||
|
@ -151,6 +138,33 @@ func ValueOrDefault(intOrPercent *IntOrString, defaultValue IntOrString) *IntOrS
|
||||||
return intOrPercent
|
return intOrPercent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetScaledValueFromIntOrPercent is meant to replace GetValueFromIntOrPercent.
|
||||||
|
// This method returns a scaled value from an IntOrString type. If the IntOrString
|
||||||
|
// is a percentage string value it's treated as a percentage and scaled appropriately
|
||||||
|
// in accordance to the total, if it's an int value it's treated as a a simple value and
|
||||||
|
// if it is a string value which is either non-numeric or numeric but lacking a trailing '%' it returns an error.
|
||||||
|
func GetScaledValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) {
|
||||||
|
if intOrPercent == nil {
|
||||||
|
return 0, errors.New("nil value for IntOrString")
|
||||||
|
}
|
||||||
|
value, isPercent, err := getIntOrPercentValueSafely(intOrPercent)
|
||||||
|
if err != nil {
|
||||||
|
return 0, fmt.Errorf("invalid value for IntOrString: %v", err)
|
||||||
|
}
|
||||||
|
if isPercent {
|
||||||
|
if roundUp {
|
||||||
|
value = int(math.Ceil(float64(value) * (float64(total)) / 100))
|
||||||
|
} else {
|
||||||
|
value = int(math.Floor(float64(value) * (float64(total)) / 100))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetValueFromIntOrPercent was deprecated in favor of
|
||||||
|
// GetScaledValueFromIntOrPercent. This method was treating all int as a numeric value and all
|
||||||
|
// strings with or without a percent symbol as a percentage value.
|
||||||
|
// Deprecated
|
||||||
func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) {
|
func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) {
|
||||||
if intOrPercent == nil {
|
if intOrPercent == nil {
|
||||||
return 0, errors.New("nil value for IntOrString")
|
return 0, errors.New("nil value for IntOrString")
|
||||||
|
@ -169,6 +183,8 @@ func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool
|
||||||
return value, nil
|
return value, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getIntOrPercentValue is a legacy function and only meant to be called by GetValueFromIntOrPercent
|
||||||
|
// For a more correct implementation call getIntOrPercentSafely
|
||||||
func getIntOrPercentValue(intOrStr *IntOrString) (int, bool, error) {
|
func getIntOrPercentValue(intOrStr *IntOrString) (int, bool, error) {
|
||||||
switch intOrStr.Type {
|
switch intOrStr.Type {
|
||||||
case Int:
|
case Int:
|
||||||
|
@ -183,3 +199,25 @@ func getIntOrPercentValue(intOrStr *IntOrString) (int, bool, error) {
|
||||||
}
|
}
|
||||||
return 0, false, fmt.Errorf("invalid type: neither int nor percentage")
|
return 0, false, fmt.Errorf("invalid type: neither int nor percentage")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getIntOrPercentValueSafely(intOrStr *IntOrString) (int, bool, error) {
|
||||||
|
switch intOrStr.Type {
|
||||||
|
case Int:
|
||||||
|
return intOrStr.IntValue(), false, nil
|
||||||
|
case String:
|
||||||
|
isPercent := false
|
||||||
|
s := intOrStr.StrVal
|
||||||
|
if strings.HasSuffix(s, "%") {
|
||||||
|
isPercent = true
|
||||||
|
s = strings.TrimSuffix(intOrStr.StrVal, "%")
|
||||||
|
} else {
|
||||||
|
return 0, false, fmt.Errorf("invalid type: string is not a percentage")
|
||||||
|
}
|
||||||
|
v, err := strconv.Atoi(s)
|
||||||
|
if err != nil {
|
||||||
|
return 0, false, fmt.Errorf("invalid value %q: %v", intOrStr.StrVal, err)
|
||||||
|
}
|
||||||
|
return int(v), isPercent, nil
|
||||||
|
}
|
||||||
|
return 0, false, fmt.Errorf("invalid type: neither int nor percentage")
|
||||||
|
}
|
||||||
|
|
|
@ -39,7 +39,8 @@ func Marshal(v interface{}) ([]byte, error) {
|
||||||
const maxDepth = 10000
|
const maxDepth = 10000
|
||||||
|
|
||||||
// Unmarshal unmarshals the given data
|
// Unmarshal unmarshals the given data
|
||||||
// If v is a *map[string]interface{}, numbers are converted to int64 or float64
|
// If v is a *map[string]interface{}, *[]interface{}, or *interface{} numbers
|
||||||
|
// are converted to int64 or float64
|
||||||
func Unmarshal(data []byte, v interface{}) error {
|
func Unmarshal(data []byte, v interface{}) error {
|
||||||
switch v := v.(type) {
|
switch v := v.(type) {
|
||||||
case *map[string]interface{}:
|
case *map[string]interface{}:
|
||||||
|
@ -52,7 +53,7 @@ func Unmarshal(data []byte, v interface{}) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
||||||
return convertMapNumbers(*v, 0)
|
return ConvertMapNumbers(*v, 0)
|
||||||
|
|
||||||
case *[]interface{}:
|
case *[]interface{}:
|
||||||
// Build a decoder from the given data
|
// Build a decoder from the given data
|
||||||
|
@ -64,7 +65,7 @@ func Unmarshal(data []byte, v interface{}) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
||||||
return convertSliceNumbers(*v, 0)
|
return ConvertSliceNumbers(*v, 0)
|
||||||
|
|
||||||
case *interface{}:
|
case *interface{}:
|
||||||
// Build a decoder from the given data
|
// Build a decoder from the given data
|
||||||
|
@ -76,29 +77,31 @@ func Unmarshal(data []byte, v interface{}) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
// If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64
|
||||||
return convertInterfaceNumbers(v, 0)
|
return ConvertInterfaceNumbers(v, 0)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return json.Unmarshal(data, v)
|
return json.Unmarshal(data, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func convertInterfaceNumbers(v *interface{}, depth int) error {
|
// ConvertInterfaceNumbers converts any json.Number values to int64 or float64.
|
||||||
|
// Values which are map[string]interface{} or []interface{} are recursively visited
|
||||||
|
func ConvertInterfaceNumbers(v *interface{}, depth int) error {
|
||||||
var err error
|
var err error
|
||||||
switch v2 := (*v).(type) {
|
switch v2 := (*v).(type) {
|
||||||
case json.Number:
|
case json.Number:
|
||||||
*v, err = convertNumber(v2)
|
*v, err = convertNumber(v2)
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
err = convertMapNumbers(v2, depth+1)
|
err = ConvertMapNumbers(v2, depth+1)
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
err = convertSliceNumbers(v2, depth+1)
|
err = ConvertSliceNumbers(v2, depth+1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertMapNumbers traverses the map, converting any json.Number values to int64 or float64.
|
// ConvertMapNumbers traverses the map, converting any json.Number values to int64 or float64.
|
||||||
// values which are map[string]interface{} or []interface{} are recursively visited
|
// values which are map[string]interface{} or []interface{} are recursively visited
|
||||||
func convertMapNumbers(m map[string]interface{}, depth int) error {
|
func ConvertMapNumbers(m map[string]interface{}, depth int) error {
|
||||||
if depth > maxDepth {
|
if depth > maxDepth {
|
||||||
return fmt.Errorf("exceeded max depth of %d", maxDepth)
|
return fmt.Errorf("exceeded max depth of %d", maxDepth)
|
||||||
}
|
}
|
||||||
|
@ -109,9 +112,9 @@ func convertMapNumbers(m map[string]interface{}, depth int) error {
|
||||||
case json.Number:
|
case json.Number:
|
||||||
m[k], err = convertNumber(v)
|
m[k], err = convertNumber(v)
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
err = convertMapNumbers(v, depth+1)
|
err = ConvertMapNumbers(v, depth+1)
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
err = convertSliceNumbers(v, depth+1)
|
err = ConvertSliceNumbers(v, depth+1)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -120,9 +123,9 @@ func convertMapNumbers(m map[string]interface{}, depth int) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertSliceNumbers traverses the slice, converting any json.Number values to int64 or float64.
|
// ConvertSliceNumbers traverses the slice, converting any json.Number values to int64 or float64.
|
||||||
// values which are map[string]interface{} or []interface{} are recursively visited
|
// values which are map[string]interface{} or []interface{} are recursively visited
|
||||||
func convertSliceNumbers(s []interface{}, depth int) error {
|
func ConvertSliceNumbers(s []interface{}, depth int) error {
|
||||||
if depth > maxDepth {
|
if depth > maxDepth {
|
||||||
return fmt.Errorf("exceeded max depth of %d", maxDepth)
|
return fmt.Errorf("exceeded max depth of %d", maxDepth)
|
||||||
}
|
}
|
||||||
|
@ -133,9 +136,9 @@ func convertSliceNumbers(s []interface{}, depth int) error {
|
||||||
case json.Number:
|
case json.Number:
|
||||||
s[i], err = convertNumber(v)
|
s[i], err = convertNumber(v)
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
err = convertMapNumbers(v, depth+1)
|
err = ConvertMapNumbers(v, depth+1)
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
err = convertSliceNumbers(v, depth+1)
|
err = ConvertSliceNumbers(v, depth+1)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue