mirror of
https://github.com/BishopFox/sliver.git
synced 2026-11-08 01:38:17 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ddeeb8554 | ||
|
|
8369b03112 | ||
|
|
e44bb1a4f1 | ||
|
|
bca8c13f20 | ||
|
|
a8a5368060 | ||
|
|
cfaa892ae5 | ||
|
|
cf4a8da802 | ||
|
|
b0b4751267 | ||
|
|
d2a6fa8cd6 | ||
|
|
ad7310dc68 | ||
|
|
e914850a13 | ||
|
|
56e368ccb0 | ||
|
|
4e43f2d0d3 |
No files matched your search
@@ -65,7 +65,7 @@ jobs:
|
||||
- name: Go 1.20
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: "1.20.1"
|
||||
go-version: "^1.20"
|
||||
|
||||
- name: Mingw
|
||||
run: brew install mingw-w64
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ FROM golang:1.20
|
||||
# a Docker deployment this is probably a good place to start.
|
||||
#
|
||||
|
||||
ENV PROTOC_VER 3.21.12
|
||||
ENV PROTOC_VER 21.12
|
||||
ENV PROTOC_GEN_GO_VER v1.27.1
|
||||
ENV GRPC_GO v1.2.0
|
||||
|
||||
|
||||
@@ -566,6 +566,7 @@ func renderTaskResponse(task *clientpb.BeaconTask, con *console.SliverConsoleCli
|
||||
"overflow": &grumble.FlagMapItem{Value: false},
|
||||
"skip-pages": &grumble.FlagMapItem{Value: 0},
|
||||
"print-cmdline": &grumble.FlagMapItem{Value: true},
|
||||
"tree": &grumble.FlagMapItem{Value: false},
|
||||
},
|
||||
}
|
||||
processes.PrintPS(beacon.OS, ps, true, ctx, con)
|
||||
|
||||
@@ -37,3 +37,5 @@ gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform?
|
||||
# kramdown v1, comment out this line.
|
||||
gem "kramdown-parser-gfm"
|
||||
|
||||
|
||||
gem "webrick", "~> 1.8"
|
||||
+40
-58
@@ -7,56 +7,37 @@ GEM
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
zeitwerk (~> 2.2, >= 2.2.2)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
addressable (2.8.1)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.11.1)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.23.7)
|
||||
commonmarker (0.23.8)
|
||||
concurrent-ruby (1.2.0)
|
||||
dnsruby (1.61.9)
|
||||
simpleidn (~> 0.1)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
ethon (0.15.0)
|
||||
ethon (0.16.0)
|
||||
ffi (>= 1.15.0)
|
||||
eventmachine (1.2.7)
|
||||
execjs (2.8.1)
|
||||
faraday (1.10.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
faraday (2.7.4)
|
||||
faraday-net_http (>= 2.0, < 3.1)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.3)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday-net_http (3.0.2)
|
||||
ffi (1.15.5)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (3.0.1)
|
||||
github-pages (225)
|
||||
github-pages (228)
|
||||
github-pages-health-check (= 1.17.9)
|
||||
jekyll (= 3.9.0)
|
||||
jekyll (= 3.9.3)
|
||||
jekyll-avatar (= 0.7.0)
|
||||
jekyll-coffeescript (= 1.1.1)
|
||||
jekyll-commonmark-ghpages (= 0.2.0)
|
||||
jekyll-commonmark-ghpages (= 0.4.0)
|
||||
jekyll-default-layout (= 0.1.4)
|
||||
jekyll-feed (= 0.15.1)
|
||||
jekyll-gist (= 1.5.0)
|
||||
@@ -88,12 +69,12 @@ GEM
|
||||
jekyll-theme-time-machine (= 0.2.0)
|
||||
jekyll-titles-from-headings (= 0.5.3)
|
||||
jemoji (= 0.12.0)
|
||||
kramdown (= 2.3.1)
|
||||
kramdown (= 2.3.2)
|
||||
kramdown-parser-gfm (= 1.1.0)
|
||||
liquid (= 4.0.3)
|
||||
liquid (= 4.0.4)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.5.1)
|
||||
nokogiri (>= 1.12.5, < 2.0)
|
||||
nokogiri (>= 1.13.6, < 2.0)
|
||||
rouge (= 3.26.0)
|
||||
terminal-table (~> 1.4)
|
||||
github-pages-health-check (1.17.9)
|
||||
@@ -102,17 +83,17 @@ GEM
|
||||
octokit (~> 4.0)
|
||||
public_suffix (>= 3.0, < 5.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.14.0)
|
||||
html-pipeline (2.14.3)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (0.9.5)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.9.0)
|
||||
jekyll (3.9.3)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
i18n (>= 0.7, < 2)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (>= 1.17, < 3)
|
||||
@@ -128,11 +109,11 @@ GEM
|
||||
coffee-script-source (~> 1.11.1)
|
||||
jekyll-commonmark (1.4.0)
|
||||
commonmarker (~> 0.22)
|
||||
jekyll-commonmark-ghpages (0.2.0)
|
||||
commonmarker (~> 0.23.4)
|
||||
jekyll-commonmark-ghpages (0.4.0)
|
||||
commonmarker (~> 0.23.7)
|
||||
jekyll (~> 3.9.0)
|
||||
jekyll-commonmark (~> 1.4.0)
|
||||
rouge (>= 2.0, < 4.0)
|
||||
rouge (>= 2.0, < 5.0)
|
||||
jekyll-default-layout (0.1.4)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-feed (0.15.1)
|
||||
@@ -216,33 +197,32 @@ GEM
|
||||
gemoji (~> 3.0)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (>= 3.0, < 5.0)
|
||||
kramdown (2.3.1)
|
||||
kramdown (2.3.2)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.7.1)
|
||||
liquid (4.0.4)
|
||||
listen (3.8.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.8.0)
|
||||
mini_portile2 (2.8.1)
|
||||
minima (2.5.1)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.17.0)
|
||||
multipart-post (2.1.1)
|
||||
nokogiri (1.13.10)
|
||||
nokogiri (1.14.1)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
racc (~> 1.4)
|
||||
octokit (4.22.0)
|
||||
faraday (>= 0.9)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
octokit (4.25.1)
|
||||
faraday (>= 1, < 3)
|
||||
sawyer (~> 0.9)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (4.0.6)
|
||||
racc (1.6.1)
|
||||
rb-fsevent (0.11.1)
|
||||
public_suffix (4.0.7)
|
||||
racc (1.6.2)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.5)
|
||||
@@ -255,9 +235,9 @@ GEM
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sawyer (0.8.2)
|
||||
sawyer (0.9.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (> 0.8, < 2.0)
|
||||
faraday (>= 0.17.3, < 3)
|
||||
simpleidn (0.2.1)
|
||||
unf (~> 0.1.4)
|
||||
terminal-table (1.8.0)
|
||||
@@ -265,16 +245,17 @@ GEM
|
||||
thread_safe (0.3.6)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.10)
|
||||
tzinfo (1.2.11)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo-data (1.2021.5)
|
||||
tzinfo-data (1.2022.7)
|
||||
tzinfo (>= 1.0.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8)
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (1.8.0)
|
||||
wdm (0.1.1)
|
||||
zeitwerk (2.6.6)
|
||||
webrick (1.8.1)
|
||||
zeitwerk (2.6.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
@@ -287,6 +268,7 @@ DEPENDENCIES
|
||||
tzinfo (~> 1.2)
|
||||
tzinfo-data
|
||||
wdm (~> 0.1.0)
|
||||
webrick (~> 1.8)
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.3
|
||||
2.4.6
|
||||
@@ -31,6 +31,15 @@ show_downloads: true
|
||||
plugins:
|
||||
- jekyll-feed
|
||||
|
||||
plugins:
|
||||
- jekyll-notion
|
||||
|
||||
# https://www.notion.so/sliver-sh/Sliver-4bbf1c77cabc46e09428c871283683d3?pvs=4
|
||||
notion:
|
||||
fetch_on_watch: true
|
||||
databases:
|
||||
- id: 4bbf1c77cabc46e09428c871283683d3
|
||||
|
||||
# Exclude from processing.
|
||||
# The following items will not be processed, by default. Create a custom list
|
||||
# to override the default setting.
|
||||
|
||||
+1
-1
@@ -157,7 +157,7 @@ echo "-----------------------------------------------------------------"
|
||||
echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux"
|
||||
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_1/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux
|
||||
echo "curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux-$GO_ARCH_2"
|
||||
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux
|
||||
curl -L --fail --output $OUTPUT_DIR/linux/$GO_ARCH_2/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_linux-$GO_ARCH_2
|
||||
echo "curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/garble.exe https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_windows.exe"
|
||||
curl -L --fail --output $OUTPUT_DIR/windows/$GO_ARCH_1/garble.exe https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_windows.exe
|
||||
echo "curl -L --fail --output $OUTPUT_DIR/darwin/$GO_ARCH_1/garble https://github.com/moloch--/garble/releases/download/v$GARBLE_VER/garble_macos-$GO_ARCH_1"
|
||||
|
||||
@@ -39,19 +39,19 @@ require (
|
||||
github.com/xlab/treeprint v1.1.0
|
||||
github.com/yiya1989/sshkrb5 v0.0.0-20201110125252-a1455b75a35e
|
||||
golang.org/x/crypto v0.5.0
|
||||
golang.org/x/net v0.5.0
|
||||
golang.org/x/sys v0.4.0
|
||||
golang.org/x/term v0.4.0
|
||||
golang.org/x/text v0.6.0
|
||||
golang.org/x/net v0.6.0
|
||||
golang.org/x/sys v0.5.0
|
||||
golang.org/x/term v0.5.0
|
||||
golang.org/x/text v0.7.0
|
||||
golang.zx2c4.com/wireguard v0.0.0-20220316235147-5aff28b14c24
|
||||
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20220208144051-fde48d68ee68
|
||||
google.golang.org/grpc v1.42.0-dev.0.20211020220737-f00baa6c3c84
|
||||
google.golang.org/protobuf v1.28.1
|
||||
gopkg.in/AlecAivazis/survey.v1 v1.8.8
|
||||
gorm.io/driver/mysql v1.4.5
|
||||
gorm.io/driver/mysql v1.4.6
|
||||
gorm.io/driver/postgres v1.4.6
|
||||
gorm.io/driver/sqlite v1.4.4
|
||||
gorm.io/gorm v1.24.3
|
||||
gorm.io/gorm v1.24.5
|
||||
gvisor.dev/gvisor v0.0.0-20220817001344-846276b3dbc5
|
||||
modernc.org/sqlite v1.19.3
|
||||
)
|
||||
|
||||
@@ -351,8 +351,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
|
||||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
|
||||
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
|
||||
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
|
||||
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 h1:B333XXssMuKQeBwiNODx4TupZy7bf4sxFZnN2ZOcvUE=
|
||||
@@ -404,14 +404,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
|
||||
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
|
||||
golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg=
|
||||
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
|
||||
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
@@ -419,8 +419,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
|
||||
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
@@ -505,8 +505,8 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/driver/mysql v1.4.5 h1:u1lytId4+o9dDaNcPCFzNv7h6wvmc92UjNk3z8enSBU=
|
||||
gorm.io/driver/mysql v1.4.5/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc=
|
||||
gorm.io/driver/mysql v1.4.6 h1:5zS3vIKcyb46byXZNcYxaT9EWNIhXzu0gPuvvVrwZ8s=
|
||||
gorm.io/driver/mysql v1.4.6/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc=
|
||||
gorm.io/driver/postgres v1.4.6 h1:1FPESNXqIKG5JmraaH2bfCVlMQ7paLoCreFxDtqzwdc=
|
||||
gorm.io/driver/postgres v1.4.6/go.mod h1:UJChCNLFKeBqQRE+HrkFUbKbq9idPXmTOk2u4Wok8S4=
|
||||
gorm.io/driver/sqlite v1.4.4 h1:gIufGoR0dQzjkyqDyYSCvsYR6fba1Gw5YKDqKeChxFc=
|
||||
@@ -514,8 +514,8 @@ gorm.io/driver/sqlite v1.4.4/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2e
|
||||
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
||||
gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
|
||||
gorm.io/gorm v1.24.2/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
|
||||
gorm.io/gorm v1.24.3 h1:WL2ifUmzR/SLp85CSURAfybcHnGZ+yLSGSxgYXlFBHg=
|
||||
gorm.io/gorm v1.24.3/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
|
||||
gorm.io/gorm v1.24.5 h1:g6OPREKqqlWq4kh/3MCQbZKImeB9e6Xgc4zD+JgNZGE=
|
||||
gorm.io/gorm v1.24.5/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
|
||||
gvisor.dev/gvisor v0.0.0-20220817001344-846276b3dbc5 h1:cv/zaNV0nr1mJzaeo4S5mHIm5va1W0/9J3/5prlsuRM=
|
||||
gvisor.dev/gvisor v0.0.0-20220817001344-846276b3dbc5/go.mod h1:TIvkJD0sxe8pIob3p6T8IzxXunlp6yfgktvTNp+DGNM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ type inflow struct {
|
||||
unsent int32
|
||||
}
|
||||
|
||||
// set sets the initial window.
|
||||
// init sets the initial window.
|
||||
func (f *inflow) init(n int32) {
|
||||
f.avail = n
|
||||
}
|
||||
|
||||
+1
-1
@@ -211,7 +211,7 @@ func (d *Decoder) at(i uint64) (hf HeaderField, ok bool) {
|
||||
return dt.ents[dt.len()-(int(i)-staticTable.len())], true
|
||||
}
|
||||
|
||||
// Decode decodes an entire block.
|
||||
// DecodeFull decodes an entire block.
|
||||
//
|
||||
// TODO: remove this method and make it incremental later? This is
|
||||
// easier for debugging now.
|
||||
|
||||
+1
-1
@@ -2192,7 +2192,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r
|
||||
tlsState = sc.tlsState
|
||||
}
|
||||
|
||||
needsContinue := rp.header.Get("Expect") == "100-continue"
|
||||
needsContinue := httpguts.HeaderValuesContainsToken(rp.header["Expect"], "100-continue")
|
||||
if needsContinue {
|
||||
rp.header.Del("Expect")
|
||||
}
|
||||
|
||||
+1
-1
@@ -1569,7 +1569,7 @@ func (cs *clientStream) cleanupWriteRequest(err error) {
|
||||
close(cs.donec)
|
||||
}
|
||||
|
||||
// awaitOpenSlotForStream waits until len(streams) < maxConcurrentStreams.
|
||||
// awaitOpenSlotForStreamLocked waits until len(streams) < maxConcurrentStreams.
|
||||
// Must hold cc.mu.
|
||||
func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {
|
||||
for {
|
||||
|
||||
+1
-1
@@ -245,7 +245,7 @@ func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
|
||||
return true, offset, nil
|
||||
}
|
||||
|
||||
// SetChecksum enables the kernel checksum processing. If on is ture,
|
||||
// SetChecksum enables the kernel checksum processing. If on is true,
|
||||
// the offset should be an offset in bytes into the data of where the
|
||||
// checksum field is located.
|
||||
func (c *dgramOpt) SetChecksum(on bool, offset int) error {
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ type histogram struct {
|
||||
valueCount int64 // number of values recorded for single value
|
||||
}
|
||||
|
||||
// AddMeasurement records a value measurement observation to the histogram.
|
||||
// addMeasurement records a value measurement observation to the histogram.
|
||||
func (h *histogram) addMeasurement(value int64) {
|
||||
// TODO: assert invariant
|
||||
h.sum += value
|
||||
|
||||
+1
@@ -2,6 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build (386 || amd64 || amd64p32) && gccgo
|
||||
// +build 386 amd64 amd64p32
|
||||
// +build gccgo
|
||||
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// Copyright 2023 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64
|
||||
// +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64
|
||||
|
||||
package cpu
|
||||
|
||||
// IsBigEndian records whether the GOARCH's byte order is big endian.
|
||||
const IsBigEndian = true
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// Copyright 2023 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh
|
||||
// +build 386 amd64 amd64p32 alpha arm arm64 loong64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh
|
||||
|
||||
package cpu
|
||||
|
||||
// IsBigEndian records whether the GOARCH's byte order is big endian.
|
||||
const IsBigEndian = false
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build gccgo,!hurd
|
||||
// +build !aix,!hurd
|
||||
//go:build gccgo && !aix && !hurd
|
||||
// +build gccgo,!aix,!hurd
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
|
||||
+1
@@ -230,6 +230,7 @@ func direntNamlen(buf []byte) (uint64, bool) {
|
||||
|
||||
func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
|
||||
func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
|
||||
func PtraceDenyAttach() (err error) { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }
|
||||
|
||||
//sysnb pipe(p *[2]int32) (err error)
|
||||
|
||||
|
||||
+7
-2
@@ -60,8 +60,13 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
|
||||
return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
|
||||
}
|
||||
|
||||
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)}
|
||||
func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{
|
||||
Op: int32(req),
|
||||
Offs: offs,
|
||||
Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe.
|
||||
Len: uint32(countin),
|
||||
}
|
||||
err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||
return int(ioDesc.Len), err
|
||||
}
|
||||
+7
-2
@@ -60,8 +60,13 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
|
||||
return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
|
||||
}
|
||||
|
||||
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)}
|
||||
func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{
|
||||
Op: int32(req),
|
||||
Offs: offs,
|
||||
Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe.
|
||||
Len: uint64(countin),
|
||||
}
|
||||
err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||
return int(ioDesc.Len), err
|
||||
}
|
||||
+7
-2
@@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||
|
||||
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||
|
||||
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)}
|
||||
func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{
|
||||
Op: int32(req),
|
||||
Offs: offs,
|
||||
Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe.
|
||||
Len: uint32(countin),
|
||||
}
|
||||
err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||
return int(ioDesc.Len), err
|
||||
}
|
||||
+7
-2
@@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||
|
||||
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||
|
||||
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)}
|
||||
func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{
|
||||
Op: int32(req),
|
||||
Offs: offs,
|
||||
Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe.
|
||||
Len: uint64(countin),
|
||||
}
|
||||
err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||
return int(ioDesc.Len), err
|
||||
}
|
||||
+7
-2
@@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||
|
||||
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||
|
||||
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)}
|
||||
func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {
|
||||
ioDesc := PtraceIoDesc{
|
||||
Op: int32(req),
|
||||
Offs: offs,
|
||||
Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe.
|
||||
Len: uint64(countin),
|
||||
}
|
||||
err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||
return int(ioDesc.Len), err
|
||||
}
|
||||
+2
-1
@@ -1800,6 +1800,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||
//sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error)
|
||||
//sys Chdir(path string) (err error)
|
||||
//sys Chroot(path string) (err error)
|
||||
//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error)
|
||||
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
||||
//sys ClockGettime(clockid int32, time *Timespec) (err error)
|
||||
//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
|
||||
@@ -1999,7 +2000,7 @@ func appendBytes(vecs []Iovec, bs [][]byte) []Iovec {
|
||||
// offs2lohi splits offs into its low and high order bits.
|
||||
func offs2lohi(offs int64) (lo, hi uintptr) {
|
||||
const longBits = SizeofLong * 8
|
||||
return uintptr(offs), uintptr(uint64(offs) >> longBits)
|
||||
return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet
|
||||
}
|
||||
|
||||
func Readv(fd int, iovs [][]byte) (n int, err error) {
|
||||
|
||||
+1
-1
@@ -578,7 +578,7 @@ func Lutimes(path string, tv []Timeval) error {
|
||||
return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)
|
||||
}
|
||||
|
||||
// emptyIovec reports whether there are no bytes in the slice of Iovec.
|
||||
// emptyIovecs reports whether there are no bytes in the slice of Iovec.
|
||||
func emptyIovecs(iov []Iovec) bool {
|
||||
for i := range iov {
|
||||
if iov[i].Len > 0 {
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ package unix
|
||||
|
||||
import "time"
|
||||
|
||||
// TimespecToNSec returns the time stored in ts as nanoseconds.
|
||||
// TimespecToNsec returns the time stored in ts as nanoseconds.
|
||||
func TimespecToNsec(ts Timespec) int64 { return ts.Nano() }
|
||||
|
||||
// NsecToTimespec converts a number of nanoseconds into a Timespec.
|
||||
|
||||
+7
-2
@@ -36,9 +36,14 @@ func xattrnamespace(fullattr string) (ns int, attr string, err error) {
|
||||
func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
|
||||
if len(dest) > idx {
|
||||
return unsafe.Pointer(&dest[idx])
|
||||
} else {
|
||||
return unsafe.Pointer(_zero)
|
||||
}
|
||||
if dest != nil {
|
||||
// extattr_get_file and extattr_list_file treat NULL differently from
|
||||
// a non-NULL pointer of length zero. Preserve the property of nilness,
|
||||
// even if we can't use dest directly.
|
||||
return unsafe.Pointer(&_zero)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// FreeBSD and NetBSD implement their own syscalls to handle extended attributes
|
||||
|
||||
+23
-7
@@ -457,7 +457,6 @@ const (
|
||||
B600 = 0x8
|
||||
B75 = 0x2
|
||||
B9600 = 0xd
|
||||
BALLOON_KVM_MAGIC = 0x13661366
|
||||
BDEVFS_MAGIC = 0x62646576
|
||||
BINDERFS_SUPER_MAGIC = 0x6c6f6f70
|
||||
BINFMTFS_MAGIC = 0x42494e4d
|
||||
@@ -563,6 +562,7 @@ const (
|
||||
BUS_USB = 0x3
|
||||
BUS_VIRTUAL = 0x6
|
||||
CAN_BCM = 0x2
|
||||
CAN_BUS_OFF_THRESHOLD = 0x100
|
||||
CAN_CTRLMODE_3_SAMPLES = 0x4
|
||||
CAN_CTRLMODE_BERR_REPORTING = 0x10
|
||||
CAN_CTRLMODE_CC_LEN8_DLC = 0x100
|
||||
@@ -577,9 +577,12 @@ const (
|
||||
CAN_EFF_FLAG = 0x80000000
|
||||
CAN_EFF_ID_BITS = 0x1d
|
||||
CAN_EFF_MASK = 0x1fffffff
|
||||
CAN_ERROR_PASSIVE_THRESHOLD = 0x80
|
||||
CAN_ERROR_WARNING_THRESHOLD = 0x60
|
||||
CAN_ERR_ACK = 0x20
|
||||
CAN_ERR_BUSERROR = 0x80
|
||||
CAN_ERR_BUSOFF = 0x40
|
||||
CAN_ERR_CNT = 0x200
|
||||
CAN_ERR_CRTL = 0x4
|
||||
CAN_ERR_CRTL_ACTIVE = 0x40
|
||||
CAN_ERR_CRTL_RX_OVERFLOW = 0x1
|
||||
@@ -820,9 +823,9 @@ const (
|
||||
DM_UUID_FLAG = 0x4000
|
||||
DM_UUID_LEN = 0x81
|
||||
DM_VERSION = 0xc138fd00
|
||||
DM_VERSION_EXTRA = "-ioctl (2022-02-22)"
|
||||
DM_VERSION_EXTRA = "-ioctl (2022-07-28)"
|
||||
DM_VERSION_MAJOR = 0x4
|
||||
DM_VERSION_MINOR = 0x2e
|
||||
DM_VERSION_MINOR = 0x2f
|
||||
DM_VERSION_PATCHLEVEL = 0x0
|
||||
DT_BLK = 0x6
|
||||
DT_CHR = 0x2
|
||||
@@ -1049,6 +1052,7 @@ const (
|
||||
ETH_P_CAIF = 0xf7
|
||||
ETH_P_CAN = 0xc
|
||||
ETH_P_CANFD = 0xd
|
||||
ETH_P_CANXL = 0xe
|
||||
ETH_P_CFM = 0x8902
|
||||
ETH_P_CONTROL = 0x16
|
||||
ETH_P_CUST = 0x6006
|
||||
@@ -1060,6 +1064,7 @@ const (
|
||||
ETH_P_DNA_RT = 0x6003
|
||||
ETH_P_DSA = 0x1b
|
||||
ETH_P_DSA_8021Q = 0xdadb
|
||||
ETH_P_DSA_A5PSW = 0xe001
|
||||
ETH_P_ECONET = 0x18
|
||||
ETH_P_EDSA = 0xdada
|
||||
ETH_P_ERSPAN = 0x88be
|
||||
@@ -1194,8 +1199,10 @@ const (
|
||||
FAN_MARK_EVICTABLE = 0x200
|
||||
FAN_MARK_FILESYSTEM = 0x100
|
||||
FAN_MARK_FLUSH = 0x80
|
||||
FAN_MARK_IGNORE = 0x400
|
||||
FAN_MARK_IGNORED_MASK = 0x20
|
||||
FAN_MARK_IGNORED_SURV_MODIFY = 0x40
|
||||
FAN_MARK_IGNORE_SURV = 0x440
|
||||
FAN_MARK_INODE = 0x0
|
||||
FAN_MARK_MOUNT = 0x10
|
||||
FAN_MARK_ONLYDIR = 0x8
|
||||
@@ -1253,6 +1260,7 @@ const (
|
||||
FSCRYPT_MODE_AES_128_CBC = 0x5
|
||||
FSCRYPT_MODE_AES_128_CTS = 0x6
|
||||
FSCRYPT_MODE_AES_256_CTS = 0x4
|
||||
FSCRYPT_MODE_AES_256_HCTR2 = 0xa
|
||||
FSCRYPT_MODE_AES_256_XTS = 0x1
|
||||
FSCRYPT_POLICY_FLAGS_PAD_16 = 0x2
|
||||
FSCRYPT_POLICY_FLAGS_PAD_32 = 0x3
|
||||
@@ -1430,6 +1438,7 @@ const (
|
||||
IFF_NOARP = 0x80
|
||||
IFF_NOFILTER = 0x1000
|
||||
IFF_NOTRAILERS = 0x20
|
||||
IFF_NO_CARRIER = 0x40
|
||||
IFF_NO_PI = 0x1000
|
||||
IFF_ONE_QUEUE = 0x2000
|
||||
IFF_PERSIST = 0x800
|
||||
@@ -1805,6 +1814,7 @@ const (
|
||||
MADV_DONTDUMP = 0x10
|
||||
MADV_DONTFORK = 0xa
|
||||
MADV_DONTNEED = 0x4
|
||||
MADV_DONTNEED_LOCKED = 0x18
|
||||
MADV_FREE = 0x8
|
||||
MADV_HUGEPAGE = 0xe
|
||||
MADV_HWPOISON = 0x64
|
||||
@@ -1846,7 +1856,7 @@ const (
|
||||
MFD_ALLOW_SEALING = 0x2
|
||||
MFD_CLOEXEC = 0x1
|
||||
MFD_HUGETLB = 0x4
|
||||
MFD_HUGE_16GB = -0x78000000
|
||||
MFD_HUGE_16GB = 0x88000000
|
||||
MFD_HUGE_16MB = 0x60000000
|
||||
MFD_HUGE_1GB = 0x78000000
|
||||
MFD_HUGE_1MB = 0x50000000
|
||||
@@ -2212,6 +2222,11 @@ const (
|
||||
PERF_AUX_FLAG_PARTIAL = 0x4
|
||||
PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00
|
||||
PERF_AUX_FLAG_TRUNCATED = 0x1
|
||||
PERF_BR_ARM64_DEBUG_DATA = 0x7
|
||||
PERF_BR_ARM64_DEBUG_EXIT = 0x5
|
||||
PERF_BR_ARM64_DEBUG_HALT = 0x4
|
||||
PERF_BR_ARM64_DEBUG_INST = 0x6
|
||||
PERF_BR_ARM64_FIQ = 0x3
|
||||
PERF_FLAG_FD_CLOEXEC = 0x8
|
||||
PERF_FLAG_FD_NO_GROUP = 0x1
|
||||
PERF_FLAG_FD_OUTPUT = 0x2
|
||||
@@ -2232,6 +2247,8 @@ const (
|
||||
PERF_MEM_LOCK_NA = 0x1
|
||||
PERF_MEM_LOCK_SHIFT = 0x18
|
||||
PERF_MEM_LVLNUM_ANY_CACHE = 0xb
|
||||
PERF_MEM_LVLNUM_CXL = 0x9
|
||||
PERF_MEM_LVLNUM_IO = 0xa
|
||||
PERF_MEM_LVLNUM_L1 = 0x1
|
||||
PERF_MEM_LVLNUM_L2 = 0x2
|
||||
PERF_MEM_LVLNUM_L3 = 0x3
|
||||
@@ -2265,6 +2282,7 @@ const (
|
||||
PERF_MEM_REMOTE_REMOTE = 0x1
|
||||
PERF_MEM_REMOTE_SHIFT = 0x25
|
||||
PERF_MEM_SNOOPX_FWD = 0x1
|
||||
PERF_MEM_SNOOPX_PEER = 0x2
|
||||
PERF_MEM_SNOOPX_SHIFT = 0x26
|
||||
PERF_MEM_SNOOP_HIT = 0x4
|
||||
PERF_MEM_SNOOP_HITM = 0x10
|
||||
@@ -2301,7 +2319,6 @@ const (
|
||||
PERF_SAMPLE_BRANCH_PLM_ALL = 0x7
|
||||
PERF_SAMPLE_WEIGHT_TYPE = 0x1004000
|
||||
PIPEFS_MAGIC = 0x50495045
|
||||
PPC_CMM_MAGIC = 0xc7571590
|
||||
PPPIOCGNPMODE = 0xc008744c
|
||||
PPPIOCNEWUNIT = 0xc004743e
|
||||
PRIO_PGRP = 0x1
|
||||
@@ -2999,6 +3016,7 @@ const (
|
||||
STATX_BLOCKS = 0x400
|
||||
STATX_BTIME = 0x800
|
||||
STATX_CTIME = 0x80
|
||||
STATX_DIOALIGN = 0x2000
|
||||
STATX_GID = 0x10
|
||||
STATX_INO = 0x100
|
||||
STATX_MNT_ID = 0x1000
|
||||
@@ -3392,9 +3410,7 @@ const (
|
||||
XDP_ZEROCOPY = 0x4
|
||||
XENFS_SUPER_MAGIC = 0xabba1974
|
||||
XFS_SUPER_MAGIC = 0x58465342
|
||||
Z3FOLD_MAGIC = 0x33
|
||||
ZONEFS_MAGIC = 0x5a4f4653
|
||||
ZSMALLOC_MAGIC = 0x58295829
|
||||
_HIDIOCGRAWNAME_LEN = 0x80
|
||||
_HIDIOCGRAWPHYS_LEN = 0x40
|
||||
_HIDIOCGRAWUNIQ_LEN = 0x40
|
||||
|
||||
+1
@@ -133,6 +133,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc03c4d1a
|
||||
MEMREADOOB = 0xc00c4d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -133,6 +133,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc00c4d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -134,6 +134,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -132,6 +132,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc00c4d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc00c4d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc00c4d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -131,6 +131,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x80044d07
|
||||
MEMISLOCKED = 0x80084d17
|
||||
MEMLOCK = 0x40084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x40084d0c
|
||||
MEMUNLOCK = 0x40084d06
|
||||
|
||||
+1
@@ -136,6 +136,7 @@ const (
|
||||
MEMGETREGIONCOUNT = 0x40044d07
|
||||
MEMISLOCKED = 0x40084d17
|
||||
MEMLOCK = 0x80084d05
|
||||
MEMREAD = 0xc0404d1a
|
||||
MEMREADOOB = 0xc0104d04
|
||||
MEMSETBADBLOCK = 0x80084d0c
|
||||
MEMUNLOCK = 0x80084d06
|
||||
|
||||
+11
@@ -537,6 +537,17 @@ func Chroot(path string) (err error) {
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {
|
||||
r0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)
|
||||
state = int(r0)
|
||||
if e1 != 0 {
|
||||
err = errnoErr(e1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||
|
||||
func ClockGetres(clockid int32, res *Timespec) (err error) {
|
||||
_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)
|
||||
if e1 != 0 {
|
||||
|
||||
+181
-36
@@ -29,6 +29,41 @@ type Itimerval struct {
|
||||
Value Timeval
|
||||
}
|
||||
|
||||
const (
|
||||
ADJ_OFFSET = 0x1
|
||||
ADJ_FREQUENCY = 0x2
|
||||
ADJ_MAXERROR = 0x4
|
||||
ADJ_ESTERROR = 0x8
|
||||
ADJ_STATUS = 0x10
|
||||
ADJ_TIMECONST = 0x20
|
||||
ADJ_TAI = 0x80
|
||||
ADJ_SETOFFSET = 0x100
|
||||
ADJ_MICRO = 0x1000
|
||||
ADJ_NANO = 0x2000
|
||||
ADJ_TICK = 0x4000
|
||||
ADJ_OFFSET_SINGLESHOT = 0x8001
|
||||
ADJ_OFFSET_SS_READ = 0xa001
|
||||
)
|
||||
|
||||
const (
|
||||
STA_PLL = 0x1
|
||||
STA_PPSFREQ = 0x2
|
||||
STA_PPSTIME = 0x4
|
||||
STA_FLL = 0x8
|
||||
STA_INS = 0x10
|
||||
STA_DEL = 0x20
|
||||
STA_UNSYNC = 0x40
|
||||
STA_FREQHOLD = 0x80
|
||||
STA_PPSSIGNAL = 0x100
|
||||
STA_PPSJITTER = 0x200
|
||||
STA_PPSWANDER = 0x400
|
||||
STA_PPSERROR = 0x800
|
||||
STA_CLOCKERR = 0x1000
|
||||
STA_NANO = 0x2000
|
||||
STA_MODE = 0x4000
|
||||
STA_CLK = 0x8000
|
||||
)
|
||||
|
||||
const (
|
||||
TIME_OK = 0x0
|
||||
TIME_INS = 0x1
|
||||
@@ -53,29 +88,30 @@ type StatxTimestamp struct {
|
||||
}
|
||||
|
||||
type Statx_t struct {
|
||||
Mask uint32
|
||||
Blksize uint32
|
||||
Attributes uint64
|
||||
Nlink uint32
|
||||
Uid uint32
|
||||
Gid uint32
|
||||
Mode uint16
|
||||
_ [1]uint16
|
||||
Ino uint64
|
||||
Size uint64
|
||||
Blocks uint64
|
||||
Attributes_mask uint64
|
||||
Atime StatxTimestamp
|
||||
Btime StatxTimestamp
|
||||
Ctime StatxTimestamp
|
||||
Mtime StatxTimestamp
|
||||
Rdev_major uint32
|
||||
Rdev_minor uint32
|
||||
Dev_major uint32
|
||||
Dev_minor uint32
|
||||
Mnt_id uint64
|
||||
_ uint64
|
||||
_ [12]uint64
|
||||
Mask uint32
|
||||
Blksize uint32
|
||||
Attributes uint64
|
||||
Nlink uint32
|
||||
Uid uint32
|
||||
Gid uint32
|
||||
Mode uint16
|
||||
_ [1]uint16
|
||||
Ino uint64
|
||||
Size uint64
|
||||
Blocks uint64
|
||||
Attributes_mask uint64
|
||||
Atime StatxTimestamp
|
||||
Btime StatxTimestamp
|
||||
Ctime StatxTimestamp
|
||||
Mtime StatxTimestamp
|
||||
Rdev_major uint32
|
||||
Rdev_minor uint32
|
||||
Dev_major uint32
|
||||
Dev_minor uint32
|
||||
Mnt_id uint64
|
||||
Dio_mem_align uint32
|
||||
Dio_offset_align uint32
|
||||
_ [12]uint64
|
||||
}
|
||||
|
||||
type Fsid struct {
|
||||
@@ -1099,7 +1135,8 @@ const (
|
||||
PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 0xf
|
||||
PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10
|
||||
PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11
|
||||
PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x12
|
||||
PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 0x12
|
||||
PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x13
|
||||
PERF_SAMPLE_BRANCH_USER = 0x1
|
||||
PERF_SAMPLE_BRANCH_KERNEL = 0x2
|
||||
PERF_SAMPLE_BRANCH_HV = 0x4
|
||||
@@ -1118,7 +1155,8 @@ const (
|
||||
PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000
|
||||
PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000
|
||||
PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000
|
||||
PERF_SAMPLE_BRANCH_MAX = 0x40000
|
||||
PERF_SAMPLE_BRANCH_PRIV_SAVE = 0x40000
|
||||
PERF_SAMPLE_BRANCH_MAX = 0x80000
|
||||
PERF_BR_UNKNOWN = 0x0
|
||||
PERF_BR_COND = 0x1
|
||||
PERF_BR_UNCOND = 0x2
|
||||
@@ -1132,7 +1170,10 @@ const (
|
||||
PERF_BR_COND_RET = 0xa
|
||||
PERF_BR_ERET = 0xb
|
||||
PERF_BR_IRQ = 0xc
|
||||
PERF_BR_MAX = 0xd
|
||||
PERF_BR_SERROR = 0xd
|
||||
PERF_BR_NO_TX = 0xe
|
||||
PERF_BR_EXTEND_ABI = 0xf
|
||||
PERF_BR_MAX = 0x10
|
||||
PERF_SAMPLE_REGS_ABI_NONE = 0x0
|
||||
PERF_SAMPLE_REGS_ABI_32 = 0x1
|
||||
PERF_SAMPLE_REGS_ABI_64 = 0x2
|
||||
@@ -1151,7 +1192,8 @@ const (
|
||||
PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
|
||||
PERF_FORMAT_ID = 0x4
|
||||
PERF_FORMAT_GROUP = 0x8
|
||||
PERF_FORMAT_MAX = 0x10
|
||||
PERF_FORMAT_LOST = 0x10
|
||||
PERF_FORMAT_MAX = 0x20
|
||||
PERF_IOC_FLAG_GROUP = 0x1
|
||||
PERF_RECORD_MMAP = 0x1
|
||||
PERF_RECORD_LOST = 0x2
|
||||
@@ -2979,7 +3021,16 @@ const (
|
||||
DEVLINK_CMD_TRAP_POLICER_NEW = 0x47
|
||||
DEVLINK_CMD_TRAP_POLICER_DEL = 0x48
|
||||
DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49
|
||||
DEVLINK_CMD_MAX = 0x51
|
||||
DEVLINK_CMD_RATE_GET = 0x4a
|
||||
DEVLINK_CMD_RATE_SET = 0x4b
|
||||
DEVLINK_CMD_RATE_NEW = 0x4c
|
||||
DEVLINK_CMD_RATE_DEL = 0x4d
|
||||
DEVLINK_CMD_LINECARD_GET = 0x4e
|
||||
DEVLINK_CMD_LINECARD_SET = 0x4f
|
||||
DEVLINK_CMD_LINECARD_NEW = 0x50
|
||||
DEVLINK_CMD_LINECARD_DEL = 0x51
|
||||
DEVLINK_CMD_SELFTESTS_GET = 0x52
|
||||
DEVLINK_CMD_MAX = 0x53
|
||||
DEVLINK_PORT_TYPE_NOTSET = 0x0
|
||||
DEVLINK_PORT_TYPE_AUTO = 0x1
|
||||
DEVLINK_PORT_TYPE_ETH = 0x2
|
||||
@@ -3208,7 +3259,13 @@ const (
|
||||
DEVLINK_ATTR_RATE_NODE_NAME = 0xa8
|
||||
DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9
|
||||
DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa
|
||||
DEVLINK_ATTR_MAX = 0xae
|
||||
DEVLINK_ATTR_LINECARD_INDEX = 0xab
|
||||
DEVLINK_ATTR_LINECARD_STATE = 0xac
|
||||
DEVLINK_ATTR_LINECARD_TYPE = 0xad
|
||||
DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 0xae
|
||||
DEVLINK_ATTR_NESTED_DEVLINK = 0xaf
|
||||
DEVLINK_ATTR_SELFTESTS = 0xb0
|
||||
DEVLINK_ATTR_MAX = 0xb0
|
||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
|
||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
|
||||
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
|
||||
@@ -3317,7 +3374,8 @@ const (
|
||||
LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7
|
||||
LWTUNNEL_ENCAP_RPL = 0x8
|
||||
LWTUNNEL_ENCAP_IOAM6 = 0x9
|
||||
LWTUNNEL_ENCAP_MAX = 0x9
|
||||
LWTUNNEL_ENCAP_XFRM = 0xa
|
||||
LWTUNNEL_ENCAP_MAX = 0xa
|
||||
|
||||
MPLS_IPTUNNEL_UNSPEC = 0x0
|
||||
MPLS_IPTUNNEL_DST = 0x1
|
||||
@@ -3512,7 +3570,9 @@ const (
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET = 0x21
|
||||
ETHTOOL_MSG_MODULE_GET = 0x22
|
||||
ETHTOOL_MSG_MODULE_SET = 0x23
|
||||
ETHTOOL_MSG_USER_MAX = 0x23
|
||||
ETHTOOL_MSG_PSE_GET = 0x24
|
||||
ETHTOOL_MSG_PSE_SET = 0x25
|
||||
ETHTOOL_MSG_USER_MAX = 0x25
|
||||
ETHTOOL_MSG_KERNEL_NONE = 0x0
|
||||
ETHTOOL_MSG_STRSET_GET_REPLY = 0x1
|
||||
ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2
|
||||
@@ -3550,7 +3610,8 @@ const (
|
||||
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 0x22
|
||||
ETHTOOL_MSG_MODULE_GET_REPLY = 0x23
|
||||
ETHTOOL_MSG_MODULE_NTF = 0x24
|
||||
ETHTOOL_MSG_KERNEL_MAX = 0x24
|
||||
ETHTOOL_MSG_PSE_GET_REPLY = 0x25
|
||||
ETHTOOL_MSG_KERNEL_MAX = 0x25
|
||||
ETHTOOL_A_HEADER_UNSPEC = 0x0
|
||||
ETHTOOL_A_HEADER_DEV_INDEX = 0x1
|
||||
ETHTOOL_A_HEADER_DEV_NAME = 0x2
|
||||
@@ -3609,7 +3670,8 @@ const (
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7
|
||||
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8
|
||||
ETHTOOL_A_LINKMODES_LANES = 0x9
|
||||
ETHTOOL_A_LINKMODES_MAX = 0x9
|
||||
ETHTOOL_A_LINKMODES_RATE_MATCHING = 0xa
|
||||
ETHTOOL_A_LINKMODES_MAX = 0xa
|
||||
ETHTOOL_A_LINKSTATE_UNSPEC = 0x0
|
||||
ETHTOOL_A_LINKSTATE_HEADER = 0x1
|
||||
ETHTOOL_A_LINKSTATE_LINK = 0x2
|
||||
@@ -4201,6 +4263,9 @@ const (
|
||||
NL80211_ACL_POLICY_DENY_UNLESS_LISTED = 0x1
|
||||
NL80211_AC_VI = 0x1
|
||||
NL80211_AC_VO = 0x0
|
||||
NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = 0x1
|
||||
NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 0x2
|
||||
NL80211_AP_SME_SA_QUERY_OFFLOAD = 0x1
|
||||
NL80211_ATTR_4ADDR = 0x53
|
||||
NL80211_ATTR_ACK = 0x5c
|
||||
NL80211_ATTR_ACK_SIGNAL = 0x107
|
||||
@@ -4209,6 +4274,7 @@ const (
|
||||
NL80211_ATTR_AIRTIME_WEIGHT = 0x112
|
||||
NL80211_ATTR_AKM_SUITES = 0x4c
|
||||
NL80211_ATTR_AP_ISOLATE = 0x60
|
||||
NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135
|
||||
NL80211_ATTR_AUTH_DATA = 0x9c
|
||||
NL80211_ATTR_AUTH_TYPE = 0x35
|
||||
NL80211_ATTR_BANDS = 0xef
|
||||
@@ -4240,6 +4306,9 @@ const (
|
||||
NL80211_ATTR_COALESCE_RULE_DELAY = 0x1
|
||||
NL80211_ATTR_COALESCE_RULE_MAX = 0x3
|
||||
NL80211_ATTR_COALESCE_RULE_PKT_PATTERN = 0x3
|
||||
NL80211_ATTR_COLOR_CHANGE_COLOR = 0x130
|
||||
NL80211_ATTR_COLOR_CHANGE_COUNT = 0x12f
|
||||
NL80211_ATTR_COLOR_CHANGE_ELEMS = 0x131
|
||||
NL80211_ATTR_CONN_FAILED_REASON = 0x9b
|
||||
NL80211_ATTR_CONTROL_PORT = 0x44
|
||||
NL80211_ATTR_CONTROL_PORT_ETHERTYPE = 0x66
|
||||
@@ -4266,6 +4335,7 @@ const (
|
||||
NL80211_ATTR_DEVICE_AP_SME = 0x8d
|
||||
NL80211_ATTR_DFS_CAC_TIME = 0x7
|
||||
NL80211_ATTR_DFS_REGION = 0x92
|
||||
NL80211_ATTR_DISABLE_EHT = 0x137
|
||||
NL80211_ATTR_DISABLE_HE = 0x12d
|
||||
NL80211_ATTR_DISABLE_HT = 0x93
|
||||
NL80211_ATTR_DISABLE_VHT = 0xaf
|
||||
@@ -4273,6 +4343,8 @@ const (
|
||||
NL80211_ATTR_DONT_WAIT_FOR_ACK = 0x8e
|
||||
NL80211_ATTR_DTIM_PERIOD = 0xd
|
||||
NL80211_ATTR_DURATION = 0x57
|
||||
NL80211_ATTR_EHT_CAPABILITY = 0x136
|
||||
NL80211_ATTR_EML_CAPABILITY = 0x13d
|
||||
NL80211_ATTR_EXT_CAPA = 0xa9
|
||||
NL80211_ATTR_EXT_CAPA_MASK = 0xaa
|
||||
NL80211_ATTR_EXTERNAL_AUTH_ACTION = 0x104
|
||||
@@ -4337,10 +4409,11 @@ const (
|
||||
NL80211_ATTR_MAC_HINT = 0xc8
|
||||
NL80211_ATTR_MAC_MASK = 0xd7
|
||||
NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca
|
||||
NL80211_ATTR_MAX = 0x137
|
||||
NL80211_ATTR_MAX = 0x140
|
||||
NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4
|
||||
NL80211_ATTR_MAX_CSA_COUNTERS = 0xce
|
||||
NL80211_ATTR_MAX_MATCH_SETS = 0x85
|
||||
NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c
|
||||
NL80211_ATTR_MAX_NUM_PMKIDS = 0x56
|
||||
NL80211_ATTR_MAX_NUM_SCAN_SSIDS = 0x2b
|
||||
NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS = 0xde
|
||||
@@ -4350,6 +4423,8 @@ const (
|
||||
NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL = 0xdf
|
||||
NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS = 0xe0
|
||||
NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN = 0x7c
|
||||
NL80211_ATTR_MBSSID_CONFIG = 0x132
|
||||
NL80211_ATTR_MBSSID_ELEMS = 0x133
|
||||
NL80211_ATTR_MCAST_RATE = 0x6b
|
||||
NL80211_ATTR_MDID = 0xb1
|
||||
NL80211_ATTR_MEASUREMENT_DURATION = 0xeb
|
||||
@@ -4359,6 +4434,11 @@ const (
|
||||
NL80211_ATTR_MESH_PEER_AID = 0xed
|
||||
NL80211_ATTR_MESH_SETUP = 0x70
|
||||
NL80211_ATTR_MGMT_SUBTYPE = 0x29
|
||||
NL80211_ATTR_MLD_ADDR = 0x13a
|
||||
NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e
|
||||
NL80211_ATTR_MLO_LINK_ID = 0x139
|
||||
NL80211_ATTR_MLO_LINKS = 0x138
|
||||
NL80211_ATTR_MLO_SUPPORT = 0x13b
|
||||
NL80211_ATTR_MNTR_FLAGS = 0x17
|
||||
NL80211_ATTR_MPATH_INFO = 0x1b
|
||||
NL80211_ATTR_MPATH_NEXT_HOP = 0x1a
|
||||
@@ -4371,6 +4451,7 @@ const (
|
||||
NL80211_ATTR_NETNS_FD = 0xdb
|
||||
NL80211_ATTR_NOACK_MAP = 0x95
|
||||
NL80211_ATTR_NSS = 0x106
|
||||
NL80211_ATTR_OBSS_COLOR_BITMAP = 0x12e
|
||||
NL80211_ATTR_OFFCHANNEL_TX_OK = 0x6c
|
||||
NL80211_ATTR_OPER_CLASS = 0xd6
|
||||
NL80211_ATTR_OPMODE_NOTIF = 0xc2
|
||||
@@ -4397,6 +4478,7 @@ const (
|
||||
NL80211_ATTR_PROTOCOL_FEATURES = 0xad
|
||||
NL80211_ATTR_PS_STATE = 0x5d
|
||||
NL80211_ATTR_QOS_MAP = 0xc7
|
||||
NL80211_ATTR_RADAR_BACKGROUND = 0x134
|
||||
NL80211_ATTR_RADAR_EVENT = 0xa8
|
||||
NL80211_ATTR_REASON_CODE = 0x36
|
||||
NL80211_ATTR_RECEIVE_MULTICAST = 0x121
|
||||
@@ -4412,6 +4494,7 @@ const (
|
||||
NL80211_ATTR_RESP_IE = 0x4e
|
||||
NL80211_ATTR_ROAM_SUPPORT = 0x83
|
||||
NL80211_ATTR_RX_FRAME_TYPES = 0x64
|
||||
NL80211_ATTR_RX_HW_TIMESTAMP = 0x140
|
||||
NL80211_ATTR_RXMGMT_FLAGS = 0xbc
|
||||
NL80211_ATTR_RX_SIGNAL_DBM = 0x97
|
||||
NL80211_ATTR_S1G_CAPABILITY = 0x128
|
||||
@@ -4484,6 +4567,7 @@ const (
|
||||
NL80211_ATTR_TSID = 0xd2
|
||||
NL80211_ATTR_TWT_RESPONDER = 0x116
|
||||
NL80211_ATTR_TX_FRAME_TYPES = 0x63
|
||||
NL80211_ATTR_TX_HW_TIMESTAMP = 0x13f
|
||||
NL80211_ATTR_TX_NO_CCK_RATE = 0x87
|
||||
NL80211_ATTR_TXQ_LIMIT = 0x10a
|
||||
NL80211_ATTR_TXQ_MEMORY_LIMIT = 0x10b
|
||||
@@ -4557,6 +4641,10 @@ const (
|
||||
NL80211_BAND_ATTR_RATES = 0x2
|
||||
NL80211_BAND_ATTR_VHT_CAPA = 0x8
|
||||
NL80211_BAND_ATTR_VHT_MCS_SET = 0x7
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET = 0xa
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY = 0x9
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE = 0xb
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA = 0x6
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC = 0x2
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET = 0x4
|
||||
@@ -4564,6 +4652,8 @@ const (
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5
|
||||
NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1
|
||||
NL80211_BAND_IFTYPE_ATTR_MAX = 0xb
|
||||
NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS = 0x7
|
||||
NL80211_BAND_LC = 0x5
|
||||
NL80211_BAND_S1GHZ = 0x4
|
||||
NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2
|
||||
NL80211_BITRATE_ATTR_MAX = 0x2
|
||||
@@ -4584,7 +4674,9 @@ const (
|
||||
NL80211_BSS_FREQUENCY_OFFSET = 0x14
|
||||
NL80211_BSS_INFORMATION_ELEMENTS = 0x6
|
||||
NL80211_BSS_LAST_SEEN_BOOTTIME = 0xf
|
||||
NL80211_BSS_MAX = 0x14
|
||||
NL80211_BSS_MAX = 0x16
|
||||
NL80211_BSS_MLD_ADDR = 0x16
|
||||
NL80211_BSS_MLO_LINK_ID = 0x15
|
||||
NL80211_BSS_PAD = 0x10
|
||||
NL80211_BSS_PARENT_BSSID = 0x12
|
||||
NL80211_BSS_PARENT_TSF = 0x11
|
||||
@@ -4612,6 +4704,7 @@ const (
|
||||
NL80211_CHAN_WIDTH_20 = 0x1
|
||||
NL80211_CHAN_WIDTH_20_NOHT = 0x0
|
||||
NL80211_CHAN_WIDTH_2 = 0x9
|
||||
NL80211_CHAN_WIDTH_320 = 0xd
|
||||
NL80211_CHAN_WIDTH_40 = 0x2
|
||||
NL80211_CHAN_WIDTH_4 = 0xa
|
||||
NL80211_CHAN_WIDTH_5 = 0x6
|
||||
@@ -4621,8 +4714,11 @@ const (
|
||||
NL80211_CMD_ABORT_SCAN = 0x72
|
||||
NL80211_CMD_ACTION = 0x3b
|
||||
NL80211_CMD_ACTION_TX_STATUS = 0x3c
|
||||
NL80211_CMD_ADD_LINK = 0x94
|
||||
NL80211_CMD_ADD_LINK_STA = 0x96
|
||||
NL80211_CMD_ADD_NAN_FUNCTION = 0x75
|
||||
NL80211_CMD_ADD_TX_TS = 0x69
|
||||
NL80211_CMD_ASSOC_COMEBACK = 0x93
|
||||
NL80211_CMD_ASSOCIATE = 0x26
|
||||
NL80211_CMD_AUTHENTICATE = 0x25
|
||||
NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL = 0x38
|
||||
@@ -4630,6 +4726,10 @@ const (
|
||||
NL80211_CMD_CHANNEL_SWITCH = 0x66
|
||||
NL80211_CMD_CH_SWITCH_NOTIFY = 0x58
|
||||
NL80211_CMD_CH_SWITCH_STARTED_NOTIFY = 0x6e
|
||||
NL80211_CMD_COLOR_CHANGE_ABORTED = 0x90
|
||||
NL80211_CMD_COLOR_CHANGE_COMPLETED = 0x91
|
||||
NL80211_CMD_COLOR_CHANGE_REQUEST = 0x8e
|
||||
NL80211_CMD_COLOR_CHANGE_STARTED = 0x8f
|
||||
NL80211_CMD_CONNECT = 0x2e
|
||||
NL80211_CMD_CONN_FAILED = 0x5b
|
||||
NL80211_CMD_CONTROL_PORT_FRAME = 0x81
|
||||
@@ -4678,8 +4778,9 @@ const (
|
||||
NL80211_CMD_LEAVE_IBSS = 0x2c
|
||||
NL80211_CMD_LEAVE_MESH = 0x45
|
||||
NL80211_CMD_LEAVE_OCB = 0x6d
|
||||
NL80211_CMD_MAX = 0x93
|
||||
NL80211_CMD_MAX = 0x98
|
||||
NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29
|
||||
NL80211_CMD_MODIFY_LINK_STA = 0x97
|
||||
NL80211_CMD_NAN_MATCH = 0x78
|
||||
NL80211_CMD_NEW_BEACON = 0xf
|
||||
NL80211_CMD_NEW_INTERFACE = 0x7
|
||||
@@ -4692,6 +4793,7 @@ const (
|
||||
NL80211_CMD_NEW_WIPHY = 0x3
|
||||
NL80211_CMD_NOTIFY_CQM = 0x40
|
||||
NL80211_CMD_NOTIFY_RADAR = 0x86
|
||||
NL80211_CMD_OBSS_COLOR_COLLISION = 0x8d
|
||||
NL80211_CMD_PEER_MEASUREMENT_COMPLETE = 0x85
|
||||
NL80211_CMD_PEER_MEASUREMENT_RESULT = 0x84
|
||||
NL80211_CMD_PEER_MEASUREMENT_START = 0x83
|
||||
@@ -4707,6 +4809,8 @@ const (
|
||||
NL80211_CMD_REGISTER_FRAME = 0x3a
|
||||
NL80211_CMD_RELOAD_REGDB = 0x7e
|
||||
NL80211_CMD_REMAIN_ON_CHANNEL = 0x37
|
||||
NL80211_CMD_REMOVE_LINK = 0x95
|
||||
NL80211_CMD_REMOVE_LINK_STA = 0x98
|
||||
NL80211_CMD_REQ_SET_REG = 0x1b
|
||||
NL80211_CMD_ROAM = 0x2f
|
||||
NL80211_CMD_SCAN_ABORTED = 0x23
|
||||
@@ -4717,6 +4821,7 @@ const (
|
||||
NL80211_CMD_SET_CHANNEL = 0x41
|
||||
NL80211_CMD_SET_COALESCE = 0x65
|
||||
NL80211_CMD_SET_CQM = 0x3f
|
||||
NL80211_CMD_SET_FILS_AAD = 0x92
|
||||
NL80211_CMD_SET_INTERFACE = 0x6
|
||||
NL80211_CMD_SET_KEY = 0xa
|
||||
NL80211_CMD_SET_MAC_ACL = 0x5d
|
||||
@@ -4791,6 +4896,8 @@ const (
|
||||
NL80211_EDMG_BW_CONFIG_MIN = 0x4
|
||||
NL80211_EDMG_CHANNELS_MAX = 0x3c
|
||||
NL80211_EDMG_CHANNELS_MIN = 0x1
|
||||
NL80211_EHT_MAX_CAPABILITY_LEN = 0x33
|
||||
NL80211_EHT_MIN_CAPABILITY_LEN = 0xd
|
||||
NL80211_EXTERNAL_AUTH_ABORT = 0x1
|
||||
NL80211_EXTERNAL_AUTH_START = 0x0
|
||||
NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK = 0x32
|
||||
@@ -4807,6 +4914,7 @@ const (
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_HT = 0x7
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_LEGACY = 0x6
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_VHT = 0x8
|
||||
NL80211_EXT_FEATURE_BSS_COLOR = 0x3a
|
||||
NL80211_EXT_FEATURE_BSS_PARENT_TSF = 0x4
|
||||
NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 = 0x1f
|
||||
NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH = 0x2a
|
||||
@@ -4818,6 +4926,7 @@ const (
|
||||
NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19
|
||||
NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20
|
||||
NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24
|
||||
NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD = 0x3b
|
||||
NL80211_EXT_FEATURE_FILS_DISCOVERY = 0x34
|
||||
NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME = 0x11
|
||||
NL80211_EXT_FEATURE_FILS_SK_OFFLOAD = 0xe
|
||||
@@ -4833,8 +4942,10 @@ const (
|
||||
NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14
|
||||
NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13
|
||||
NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31
|
||||
NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d
|
||||
NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b
|
||||
NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39
|
||||
NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c
|
||||
NL80211_EXT_FEATURE_RRM = 0x1
|
||||
NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33
|
||||
NL80211_EXT_FEATURE_SAE_OFFLOAD = 0x26
|
||||
@@ -4906,7 +5017,9 @@ const (
|
||||
NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11
|
||||
NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc
|
||||
NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10
|
||||
NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a
|
||||
NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb
|
||||
NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b
|
||||
NL80211_FREQUENCY_ATTR_NO_HE = 0x13
|
||||
NL80211_FREQUENCY_ATTR_NO_HT40_MINUS = 0x9
|
||||
NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa
|
||||
@@ -5006,6 +5119,12 @@ const (
|
||||
NL80211_MAX_SUPP_HT_RATES = 0x4d
|
||||
NL80211_MAX_SUPP_RATES = 0x20
|
||||
NL80211_MAX_SUPP_REG_RULES = 0x80
|
||||
NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5
|
||||
NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3
|
||||
NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5
|
||||
NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY = 0x2
|
||||
NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES = 0x1
|
||||
NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX = 0x4
|
||||
NL80211_MESHCONF_ATTR_MAX = 0x1f
|
||||
NL80211_MESHCONF_AUTO_OPEN_PLINKS = 0x7
|
||||
NL80211_MESHCONF_AWAKE_WINDOW = 0x1b
|
||||
@@ -5168,6 +5287,7 @@ const (
|
||||
NL80211_PMSR_FTM_FAILURE_UNSPECIFIED = 0x0
|
||||
NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL = 0x3
|
||||
NL80211_PMSR_FTM_REQ_ATTR_ASAP = 0x1
|
||||
NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR = 0xd
|
||||
NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION = 0x5
|
||||
NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD = 0x4
|
||||
NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST = 0x6
|
||||
@@ -5244,12 +5364,36 @@ const (
|
||||
NL80211_RADAR_PRE_CAC_EXPIRED = 0x4
|
||||
NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb
|
||||
NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa
|
||||
NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12
|
||||
NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3
|
||||
NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc
|
||||
NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8
|
||||
NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9
|
||||
NL80211_RATE_INFO_BITRATE32 = 0x5
|
||||
NL80211_RATE_INFO_BITRATE = 0x1
|
||||
NL80211_RATE_INFO_EHT_GI_0_8 = 0x0
|
||||
NL80211_RATE_INFO_EHT_GI_1_6 = 0x1
|
||||
NL80211_RATE_INFO_EHT_GI_3_2 = 0x2
|
||||
NL80211_RATE_INFO_EHT_GI = 0x15
|
||||
NL80211_RATE_INFO_EHT_MCS = 0x13
|
||||
NL80211_RATE_INFO_EHT_NSS = 0x14
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_106 = 0x3
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_106P26 = 0x4
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_242 = 0x5
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_26 = 0x0
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 = 0xb
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484 = 0xc
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_3x996 = 0xd
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484 = 0xe
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_484 = 0x6
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_484P242 = 0x7
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_4x996 = 0xf
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_52 = 0x1
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_52P26 = 0x2
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996 = 0x8
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996P484 = 0x9
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242 = 0xa
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC = 0x16
|
||||
NL80211_RATE_INFO_HE_1XLTF = 0x0
|
||||
NL80211_RATE_INFO_HE_2XLTF = 0x1
|
||||
NL80211_RATE_INFO_HE_4XLTF = 0x2
|
||||
@@ -5292,6 +5436,7 @@ const (
|
||||
NL80211_RRF_GO_CONCURRENT = 0x1000
|
||||
NL80211_RRF_IR_CONCURRENT = 0x1000
|
||||
NL80211_RRF_NO_160MHZ = 0x10000
|
||||
NL80211_RRF_NO_320MHZ = 0x40000
|
||||
NL80211_RRF_NO_80MHZ = 0x8000
|
||||
NL80211_RRF_NO_CCK = 0x2
|
||||
NL80211_RRF_NO_HE = 0x20000
|
||||
|
||||
+2
-12
@@ -10,7 +10,6 @@ import (
|
||||
errorspkg "errors"
|
||||
"fmt"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
@@ -87,22 +86,13 @@ func StringToUTF16(s string) []uint16 {
|
||||
// s, with a terminating NUL added. If s contains a NUL byte at any
|
||||
// location, it returns (nil, syscall.EINVAL).
|
||||
func UTF16FromString(s string) ([]uint16, error) {
|
||||
if strings.IndexByte(s, 0) != -1 {
|
||||
return nil, syscall.EINVAL
|
||||
}
|
||||
return utf16.Encode([]rune(s + "\x00")), nil
|
||||
return syscall.UTF16FromString(s)
|
||||
}
|
||||
|
||||
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
|
||||
// with a terminating NUL and any bytes after the NUL removed.
|
||||
func UTF16ToString(s []uint16) string {
|
||||
for i, v := range s {
|
||||
if v == 0 {
|
||||
s = s[:i]
|
||||
break
|
||||
}
|
||||
}
|
||||
return string(utf16.Decode(s))
|
||||
return syscall.UTF16ToString(s)
|
||||
}
|
||||
|
||||
// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ func (t Tag) Parent() Tag {
|
||||
return Tag{language: lang, locale: lang}
|
||||
}
|
||||
|
||||
// returns token t and the rest of the string.
|
||||
// nextToken returns token t and the rest of the string.
|
||||
func nextToken(s string) (t, tail string) {
|
||||
p := strings.Index(s[1:], "-")
|
||||
if p == -1 {
|
||||
|
||||
+1
-1
@@ -409,7 +409,7 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
|
||||
return t, nil
|
||||
}
|
||||
|
||||
// findKeyAndType returns the start and end position for the type corresponding
|
||||
// findTypeForKey returns the start and end position for the type corresponding
|
||||
// to key or the point at which to insert the key-value pair if the type
|
||||
// wasn't found. The hasExt return value reports whether an -u extension was present.
|
||||
// Note: the extensions are typically very small and are likely to contain
|
||||
|
||||
+1
-1
@@ -344,7 +344,7 @@ func (t Tag) Parent() Tag {
|
||||
return Tag(compact.Tag(t).Parent())
|
||||
}
|
||||
|
||||
// returns token t and the rest of the string.
|
||||
// nextToken returns token t and the rest of the string.
|
||||
func nextToken(s string) (t, tail string) {
|
||||
p := strings.Index(s[1:], "-")
|
||||
if p == -1 {
|
||||
|
||||
+39
-3
@@ -3,6 +3,7 @@ package mysql
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"gorm.io/gorm"
|
||||
@@ -49,15 +50,50 @@ func (m Migrator) FullDataTypeOf(field *schema.Field) clause.Expr {
|
||||
func (m Migrator) AlterColumn(value interface{}, field string) error {
|
||||
return m.RunWithValue(value, func(stmt *gorm.Statement) error {
|
||||
if field := stmt.Schema.LookUpField(field); field != nil {
|
||||
fullDataType := m.FullDataTypeOf(field)
|
||||
if m.Dialector.DontSupportRenameColumnUnique {
|
||||
fullDataType.SQL = strings.Replace(fullDataType.SQL, " UNIQUE ", " ", 1)
|
||||
}
|
||||
|
||||
return m.DB.Exec(
|
||||
"ALTER TABLE ? MODIFY COLUMN ? ?",
|
||||
clause.Table{Name: stmt.Table}, clause.Column{Name: field.DBName}, m.FullDataTypeOf(field),
|
||||
clause.Table{Name: stmt.Table}, clause.Column{Name: field.DBName}, fullDataType,
|
||||
).Error
|
||||
}
|
||||
return fmt.Errorf("failed to look up field with name: %s", field)
|
||||
})
|
||||
}
|
||||
|
||||
func (m Migrator) TiDBVersion() (isTiDB bool, major, minor, patch int, err error) {
|
||||
// TiDB version string looks like:
|
||||
// "5.7.25-TiDB-v6.5.0" or "5.7.25-TiDB-v6.4.0-serverless"
|
||||
tidbVersionArray := strings.Split(m.Dialector.ServerVersion, "-")
|
||||
if len(tidbVersionArray) < 3 || tidbVersionArray[1] != "TiDB" {
|
||||
// It isn't TiDB
|
||||
return
|
||||
}
|
||||
|
||||
rawVersion := strings.TrimPrefix(tidbVersionArray[2], "v")
|
||||
realVersionArray := strings.Split(rawVersion, ".")
|
||||
if major, err = strconv.Atoi(realVersionArray[0]); err != nil {
|
||||
err = fmt.Errorf("failed to parse the version of TiDB, the major version is: %s", realVersionArray[0])
|
||||
return
|
||||
}
|
||||
|
||||
if minor, err = strconv.Atoi(realVersionArray[1]); err != nil {
|
||||
err = fmt.Errorf("failed to parse the version of TiDB, the minor version is: %s", realVersionArray[0])
|
||||
return
|
||||
}
|
||||
|
||||
if patch, err = strconv.Atoi(realVersionArray[2]); err != nil {
|
||||
err = fmt.Errorf("failed to parse the version of TiDB, the patch version is: %s", realVersionArray[0])
|
||||
return
|
||||
}
|
||||
|
||||
isTiDB = true
|
||||
return
|
||||
}
|
||||
|
||||
func (m Migrator) RenameColumn(value interface{}, oldName, newName string) error {
|
||||
return m.RunWithValue(value, func(stmt *gorm.Statement) error {
|
||||
if !m.Dialector.DontSupportRenameColumn {
|
||||
@@ -173,11 +209,11 @@ func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {
|
||||
}
|
||||
|
||||
rawColumnTypes, err := rows.ColumnTypes()
|
||||
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
if err := rows.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+38
@@ -21,6 +21,10 @@ import (
|
||||
"gorm.io/gorm/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
AutoRandomTag = "auto_random()" // Treated as an auto_random field for tidb
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
DriverName string
|
||||
ServerVersion string
|
||||
@@ -36,6 +40,7 @@ type Config struct {
|
||||
DontSupportRenameColumn bool
|
||||
DontSupportForShareClause bool
|
||||
DontSupportNullAsDefaultValue bool
|
||||
DontSupportRenameColumnUnique bool
|
||||
}
|
||||
|
||||
type Dialector struct {
|
||||
@@ -134,6 +139,10 @@ func (dialector Dialector) Initialize(db *gorm.DB) (err error) {
|
||||
dialector.Config.DontSupportRenameColumn = true
|
||||
dialector.Config.DontSupportForShareClause = true
|
||||
}
|
||||
|
||||
if strings.Contains(dialector.ServerVersion, "TiDB") {
|
||||
dialector.Config.DontSupportRenameColumnUnique = true
|
||||
}
|
||||
}
|
||||
|
||||
// register callbacks
|
||||
@@ -417,7 +426,36 @@ func (dialector Dialector) getSchemaBytesType(field *schema.Field) string {
|
||||
return "longblob"
|
||||
}
|
||||
|
||||
// autoRandomType
|
||||
// field.DataType MUST be `schema.Int` or `schema.Uint`
|
||||
// Judgement logic:
|
||||
// 1. Is PrimaryKey;
|
||||
// 2. Has default value;
|
||||
// 3. Default value is "auto_random()";
|
||||
// 4. IGNORE the field.Size, it MUST be bigint;
|
||||
// 5. CLEAR the default tag, and return true;
|
||||
// 6. Otherwise, return false.
|
||||
func autoRandomType(field *schema.Field) (bool, string) {
|
||||
if field.PrimaryKey && field.HasDefaultValue &&
|
||||
strings.ToLower(strings.TrimSpace(field.DefaultValue)) == AutoRandomTag {
|
||||
field.DefaultValue = ""
|
||||
|
||||
sqlType := "bigint"
|
||||
if field.DataType == schema.Uint {
|
||||
sqlType += " unsigned"
|
||||
}
|
||||
sqlType += " auto_random"
|
||||
return true, sqlType
|
||||
}
|
||||
|
||||
return false, ""
|
||||
}
|
||||
|
||||
func (dialector Dialector) getSchemaIntAndUnitType(field *schema.Field) string {
|
||||
if autoRandom, typeString := autoRandomType(field); autoRandom {
|
||||
return typeString
|
||||
}
|
||||
|
||||
constraint := func(sqlType string) string {
|
||||
if field.DataType == schema.Uint {
|
||||
sqlType += " unsigned"
|
||||
|
||||
-3
@@ -4,9 +4,6 @@ The fantastic ORM library for Golang, aims to be developer friendly.
|
||||
|
||||
[](https://goreportcard.com/report/github.com/go-gorm/gorm)
|
||||
[](https://github.com/go-gorm/gorm/actions)
|
||||
[](https://gitter.im/jinzhu/gorm?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://opencollective.com/gorm)
|
||||
[](https://opencollective.com/gorm)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://pkg.go.dev/gorm.io/gorm?tab=doc)
|
||||
|
||||
|
||||
+4
@@ -93,6 +93,10 @@ func (p *processor) Execute(db *DB) *DB {
|
||||
resetBuildClauses = true
|
||||
}
|
||||
|
||||
if optimizer, ok := db.Statement.Dest.(StatementModifier); ok {
|
||||
optimizer.ModifyStatement(stmt)
|
||||
}
|
||||
|
||||
// assign model values
|
||||
if stmt.Model == nil {
|
||||
stmt.Model = stmt.Dest
|
||||
|
||||
+7
-3
@@ -55,7 +55,7 @@ func (db *DB) Clauses(conds ...clause.Expression) (tx *DB) {
|
||||
return
|
||||
}
|
||||
|
||||
var tableRegexp = regexp.MustCompile(`(?i).+? AS (\w+)\s*(?:$|,)`)
|
||||
var tableRegexp = regexp.MustCompile(`(?i)(?:.+? AS (\w+)\s*(?:$|,)|^\w+\s+(\w+)$)`)
|
||||
|
||||
// Table specify the table you would like to run db operations
|
||||
//
|
||||
@@ -65,8 +65,12 @@ func (db *DB) Table(name string, args ...interface{}) (tx *DB) {
|
||||
tx = db.getInstance()
|
||||
if strings.Contains(name, " ") || strings.Contains(name, "`") || len(args) > 0 {
|
||||
tx.Statement.TableExpr = &clause.Expr{SQL: name, Vars: args}
|
||||
if results := tableRegexp.FindStringSubmatch(name); len(results) == 2 {
|
||||
tx.Statement.Table = results[1]
|
||||
if results := tableRegexp.FindStringSubmatch(name); len(results) == 3 {
|
||||
if results[1] != "" {
|
||||
tx.Statement.Table = results[1]
|
||||
} else {
|
||||
tx.Statement.Table = results[2]
|
||||
}
|
||||
}
|
||||
} else if tables := strings.Split(name, "."); len(tables) == 2 {
|
||||
tx.Statement.TableExpr = &clause.Expr{SQL: tx.Statement.Quote(name)}
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ type Builder interface {
|
||||
Writer
|
||||
WriteQuoted(field interface{})
|
||||
AddVar(Writer, ...interface{})
|
||||
AddError(error) error
|
||||
}
|
||||
|
||||
// Clause
|
||||
|
||||
+8
-4
@@ -120,7 +120,10 @@ func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
parseIndexes = stmt.Schema.ParseIndexes()
|
||||
parseCheckConstraints = stmt.Schema.ParseCheckConstraints()
|
||||
)
|
||||
for _, dbName := range stmt.Schema.DBNames {
|
||||
field := stmt.Schema.FieldsByDBName[dbName]
|
||||
var foundColumn gorm.ColumnType
|
||||
@@ -157,7 +160,7 @@ func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, chk := range stmt.Schema.ParseCheckConstraints() {
|
||||
for _, chk := range parseCheckConstraints {
|
||||
if !queryTx.Migrator().HasConstraint(value, chk.Name) {
|
||||
if err := execTx.Migrator().CreateConstraint(value, chk.Name); err != nil {
|
||||
return err
|
||||
@@ -165,7 +168,7 @@ func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, idx := range stmt.Schema.ParseIndexes() {
|
||||
for _, idx := range parseIndexes {
|
||||
if !queryTx.Migrator().HasIndex(value, idx.Name) {
|
||||
if err := execTx.Migrator().CreateIndex(value, idx.Name); err != nil {
|
||||
return err
|
||||
@@ -430,7 +433,8 @@ func (m Migrator) MigrateColumn(value interface{}, field *schema.Field, columnTy
|
||||
realDataType := strings.ToLower(columnType.DatabaseTypeName())
|
||||
|
||||
var (
|
||||
alterColumn, isSameType bool
|
||||
alterColumn bool
|
||||
isSameType = fullDataType == realDataType
|
||||
)
|
||||
|
||||
if !field.PrimaryKey {
|
||||
|
||||
+5
-1
@@ -65,7 +65,11 @@ func (schema *Schema) ParseIndexes() map[string]Index {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, index := range indexes {
|
||||
if index.Class == "UNIQUE" && len(index.Fields) == 1 {
|
||||
index.Fields[0].Field.Unique = true
|
||||
}
|
||||
}
|
||||
return indexes
|
||||
}
|
||||
|
||||
|
||||
-8
@@ -246,14 +246,6 @@ func ParseWithSpecialTableName(dest interface{}, cacheStore *sync.Map, namer Nam
|
||||
field.HasDefaultValue = true
|
||||
field.AutoIncrement = true
|
||||
}
|
||||
case String:
|
||||
if _, ok := field.TagSettings["PRIMARYKEY"]; !ok {
|
||||
if !field.HasDefaultValue || field.DefaultValueInterface != nil {
|
||||
schema.FieldsWithDefaultDBValue = append(schema.FieldsWithDefaultDBValue, field)
|
||||
}
|
||||
|
||||
field.HasDefaultValue = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-7
@@ -6,6 +6,7 @@ import (
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
|
||||
"github.com/jinzhu/now"
|
||||
"gorm.io/gorm/clause"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
@@ -45,11 +46,21 @@ func (n *DeletedAt) UnmarshalJSON(b []byte) error {
|
||||
}
|
||||
|
||||
func (DeletedAt) QueryClauses(f *schema.Field) []clause.Interface {
|
||||
return []clause.Interface{SoftDeleteQueryClause{Field: f}}
|
||||
return []clause.Interface{SoftDeleteQueryClause{Field: f, ZeroValue: parseZeroValueTag(f)}}
|
||||
}
|
||||
|
||||
func parseZeroValueTag(f *schema.Field) sql.NullString {
|
||||
if v, ok := f.TagSettings["ZEROVALUE"]; ok {
|
||||
if _, err := now.Parse(v); err == nil {
|
||||
return sql.NullString{String: v, Valid: true}
|
||||
}
|
||||
}
|
||||
return sql.NullString{Valid: false}
|
||||
}
|
||||
|
||||
type SoftDeleteQueryClause struct {
|
||||
Field *schema.Field
|
||||
ZeroValue sql.NullString
|
||||
Field *schema.Field
|
||||
}
|
||||
|
||||
func (sd SoftDeleteQueryClause) Name() string {
|
||||
@@ -78,18 +89,19 @@ func (sd SoftDeleteQueryClause) ModifyStatement(stmt *Statement) {
|
||||
}
|
||||
|
||||
stmt.AddClause(clause.Where{Exprs: []clause.Expression{
|
||||
clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: nil},
|
||||
clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: sd.ZeroValue},
|
||||
}})
|
||||
stmt.Clauses["soft_delete_enabled"] = clause.Clause{}
|
||||
}
|
||||
}
|
||||
|
||||
func (DeletedAt) UpdateClauses(f *schema.Field) []clause.Interface {
|
||||
return []clause.Interface{SoftDeleteUpdateClause{Field: f}}
|
||||
return []clause.Interface{SoftDeleteUpdateClause{Field: f, ZeroValue: parseZeroValueTag(f)}}
|
||||
}
|
||||
|
||||
type SoftDeleteUpdateClause struct {
|
||||
Field *schema.Field
|
||||
ZeroValue sql.NullString
|
||||
Field *schema.Field
|
||||
}
|
||||
|
||||
func (sd SoftDeleteUpdateClause) Name() string {
|
||||
@@ -109,11 +121,12 @@ func (sd SoftDeleteUpdateClause) ModifyStatement(stmt *Statement) {
|
||||
}
|
||||
|
||||
func (DeletedAt) DeleteClauses(f *schema.Field) []clause.Interface {
|
||||
return []clause.Interface{SoftDeleteDeleteClause{Field: f}}
|
||||
return []clause.Interface{SoftDeleteDeleteClause{Field: f, ZeroValue: parseZeroValueTag(f)}}
|
||||
}
|
||||
|
||||
type SoftDeleteDeleteClause struct {
|
||||
Field *schema.Field
|
||||
ZeroValue sql.NullString
|
||||
Field *schema.Field
|
||||
}
|
||||
|
||||
func (sd SoftDeleteDeleteClause) Name() string {
|
||||
|
||||
+24
-27
@@ -311,6 +311,9 @@ func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) []
|
||||
conds := make([]clause.Expression, 0, 4)
|
||||
args = append([]interface{}{query}, args...)
|
||||
for idx, arg := range args {
|
||||
if arg == nil {
|
||||
continue
|
||||
}
|
||||
if valuer, ok := arg.(driver.Valuer); ok {
|
||||
arg, _ = valuer.Value()
|
||||
}
|
||||
@@ -665,47 +668,41 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
|
||||
results := map[string]bool{}
|
||||
notRestricted := false
|
||||
|
||||
// select columns
|
||||
for _, column := range stmt.Selects {
|
||||
processColumn := func(column string, result bool) {
|
||||
if stmt.Schema == nil {
|
||||
results[column] = true
|
||||
results[column] = result
|
||||
} else if column == "*" {
|
||||
notRestricted = true
|
||||
notRestricted = result
|
||||
for _, dbName := range stmt.Schema.DBNames {
|
||||
results[dbName] = true
|
||||
results[dbName] = result
|
||||
}
|
||||
} else if column == clause.Associations {
|
||||
for _, rel := range stmt.Schema.Relationships.Relations {
|
||||
results[rel.Name] = true
|
||||
results[rel.Name] = result
|
||||
}
|
||||
} else if field := stmt.Schema.LookUpField(column); field != nil && field.DBName != "" {
|
||||
results[field.DBName] = true
|
||||
results[field.DBName] = result
|
||||
} else if matches := nameMatcher.FindStringSubmatch(column); len(matches) == 3 && (matches[1] == stmt.Table || matches[1] == "") {
|
||||
results[matches[2]] = true
|
||||
if matches[2] == "*" {
|
||||
for _, dbName := range stmt.Schema.DBNames {
|
||||
results[dbName] = result
|
||||
}
|
||||
} else {
|
||||
results[matches[2]] = result
|
||||
}
|
||||
} else {
|
||||
results[column] = true
|
||||
results[column] = result
|
||||
}
|
||||
}
|
||||
|
||||
// select columns
|
||||
for _, column := range stmt.Selects {
|
||||
processColumn(column, true)
|
||||
}
|
||||
|
||||
// omit columns
|
||||
for _, omit := range stmt.Omits {
|
||||
if stmt.Schema == nil {
|
||||
results[omit] = false
|
||||
} else if omit == "*" {
|
||||
for _, dbName := range stmt.Schema.DBNames {
|
||||
results[dbName] = false
|
||||
}
|
||||
} else if omit == clause.Associations {
|
||||
for _, rel := range stmt.Schema.Relationships.Relations {
|
||||
results[rel.Name] = false
|
||||
}
|
||||
} else if field := stmt.Schema.LookUpField(omit); field != nil && field.DBName != "" {
|
||||
results[field.DBName] = false
|
||||
} else if matches := nameMatcher.FindStringSubmatch(omit); len(matches) == 2 {
|
||||
results[matches[1]] = false
|
||||
} else {
|
||||
results[omit] = false
|
||||
}
|
||||
for _, column := range stmt.Omits {
|
||||
processColumn(column, false)
|
||||
}
|
||||
|
||||
if stmt.Schema != nil {
|
||||
|
||||
Vendored
+6
-6
@@ -389,7 +389,7 @@ golang.org/x/crypto/ssh/terminal
|
||||
# golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4
|
||||
## explicit; go 1.17
|
||||
golang.org/x/mod/semver
|
||||
# golang.org/x/net v0.5.0
|
||||
# golang.org/x/net v0.6.0
|
||||
## explicit; go 1.17
|
||||
golang.org/x/net/bpf
|
||||
golang.org/x/net/dns/dnsmessage
|
||||
@@ -403,7 +403,7 @@ golang.org/x/net/internal/timeseries
|
||||
golang.org/x/net/ipv4
|
||||
golang.org/x/net/ipv6
|
||||
golang.org/x/net/trace
|
||||
# golang.org/x/sys v0.4.0
|
||||
# golang.org/x/sys v0.5.0
|
||||
## explicit; go 1.17
|
||||
golang.org/x/sys/cpu
|
||||
golang.org/x/sys/execabs
|
||||
@@ -414,10 +414,10 @@ golang.org/x/sys/windows
|
||||
golang.org/x/sys/windows/registry
|
||||
golang.org/x/sys/windows/svc
|
||||
golang.org/x/sys/windows/svc/mgr
|
||||
# golang.org/x/term v0.4.0
|
||||
# golang.org/x/term v0.5.0
|
||||
## explicit; go 1.17
|
||||
golang.org/x/term
|
||||
# golang.org/x/text v0.6.0
|
||||
# golang.org/x/text v0.7.0
|
||||
## explicit; go 1.17
|
||||
golang.org/x/text/cases
|
||||
golang.org/x/text/encoding
|
||||
@@ -613,7 +613,7 @@ gopkg.in/jcmturner/rpc.v1/ndr
|
||||
# gopkg.in/yaml.v3 v3.0.1
|
||||
## explicit
|
||||
gopkg.in/yaml.v3
|
||||
# gorm.io/driver/mysql v1.4.5
|
||||
# gorm.io/driver/mysql v1.4.6
|
||||
## explicit; go 1.14
|
||||
gorm.io/driver/mysql
|
||||
# gorm.io/driver/postgres v1.4.6
|
||||
@@ -622,7 +622,7 @@ gorm.io/driver/postgres
|
||||
# gorm.io/driver/sqlite v1.4.4
|
||||
## explicit; go 1.14
|
||||
gorm.io/driver/sqlite
|
||||
# gorm.io/gorm v1.24.3
|
||||
# gorm.io/gorm v1.24.5
|
||||
## explicit; go 1.16
|
||||
gorm.io/gorm
|
||||
gorm.io/gorm/callbacks
|
||||
|
||||
Reference in new issue
Block a user