Task collection improvements (#109)

This commit is contained in:
konrad 2019-12-01 13:38:11 +00:00
parent d96831fe3a
commit 7e4deab8f7
81 changed files with 44585 additions and 38569 deletions

22
go.mod
View file

@ -30,8 +30,10 @@ require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835 github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835
github.com/garyburd/redigo v1.6.0 // indirect github.com/garyburd/redigo v1.6.0 // indirect
github.com/gin-gonic/gin v1.5.0 // indirect
github.com/go-openapi/jsonreference v0.19.3 // indirect github.com/go-openapi/jsonreference v0.19.3 // indirect
github.com/go-openapi/spec v0.19.3 // indirect github.com/go-openapi/spec v0.19.4 // indirect
github.com/go-playground/universal-translator v0.17.0 // indirect
github.com/go-redis/redis v6.15.2+incompatible github.com/go-redis/redis v6.15.2+incompatible
github.com/go-sql-driver/mysql v1.4.1 github.com/go-sql-driver/mysql v1.4.1
github.com/go-xorm/builder v0.3.4 github.com/go-xorm/builder v0.3.4
@ -39,16 +41,16 @@ require (
github.com/go-xorm/tests v0.5.6 // indirect github.com/go-xorm/tests v0.5.6 // indirect
github.com/go-xorm/xorm v0.7.1 github.com/go-xorm/xorm v0.7.1
github.com/go-xorm/xorm-redis-cache v0.0.0-20180727005610-859b313566b2 github.com/go-xorm/xorm-redis-cache v0.0.0-20180727005610-859b313566b2
github.com/golang/protobuf v1.3.2 // indirect
github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc
github.com/imdario/mergo v0.3.7 github.com/imdario/mergo v0.3.7
github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb
github.com/json-iterator/go v1.1.7 // indirect github.com/json-iterator/go v1.1.8 // indirect
github.com/kr/pty v1.1.8 // indirect github.com/kr/pty v1.1.8 // indirect
github.com/labstack/echo/v4 v4.1.11 github.com/labstack/echo/v4 v4.1.11
github.com/labstack/gommon v0.3.0 github.com/labstack/gommon v0.3.0
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef
github.com/leodido/go-urn v1.2.0 // indirect
github.com/mailru/easyjson v0.7.0 // indirect github.com/mailru/easyjson v0.7.0 // indirect
github.com/mattn/go-colorable v0.1.4 // indirect github.com/mattn/go-colorable v0.1.4 // indirect
github.com/mattn/go-isatty v0.0.10 // indirect github.com/mattn/go-isatty v0.0.10 // indirect
@ -71,24 +73,24 @@ require (
github.com/spf13/viper v1.3.2 github.com/spf13/viper v1.3.2
github.com/stretchr/testify v1.4.0 github.com/stretchr/testify v1.4.0
github.com/swaggo/swag v1.6.3 github.com/swaggo/swag v1.6.3
github.com/ugorji/go v1.1.7 // indirect
github.com/ulule/limiter/v3 v3.3.0 github.com/ulule/limiter/v3 v3.3.0
github.com/urfave/cli v1.22.1 // indirect github.com/urfave/cli v1.22.2 // indirect
github.com/valyala/fasttemplate v1.1.0 // indirect github.com/valyala/fasttemplate v1.1.0 // indirect
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1
golang.org/x/lint v0.0.0-20190409202823-959b441ac422 golang.org/x/lint v0.0.0-20190409202823-959b441ac422
golang.org/x/net v0.0.0-20191021144547-ec77196f6094 // indirect golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 // indirect
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2 // indirect golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 // indirect
golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3 // indirect golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d // indirect
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 // indirect golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 // indirect
google.golang.org/appengine v1.5.0 // indirect google.golang.org/appengine v1.5.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/d4l3k/messagediff.v1 v1.2.1 gopkg.in/d4l3k/messagediff.v1 v1.2.1
gopkg.in/go-playground/validator.v9 v9.30.2 // indirect
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/testfixtures.v2 v2.5.3 gopkg.in/testfixtures.v2 v2.5.3
gopkg.in/yaml.v2 v2.2.4 // indirect gopkg.in/yaml.v2 v2.2.7 // indirect
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a
src.techknowlogick.com/xgo v0.0.0-20190507142556-a5b29ecb0ff4 src.techknowlogick.com/xgo v0.0.0-20190507142556-a5b29ecb0ff4
src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c

24
go.sum
View file

@ -81,6 +81,7 @@ github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NB
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y=
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
github.com/go-chi/chi v3.3.3+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi v3.3.3+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
github.com/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0= github.com/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0=
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
@ -103,6 +104,8 @@ github.com/go-openapi/spec v0.19.0 h1:A4SZ6IWh3lnjH0rG0Z5lkxazMGBECtrZcbyYQi+64k
github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc=
github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
github.com/go-openapi/spec v0.19.4 h1:ixzUSnHTd6hCemgtAJgluaTSGYpLNpJY4mA2DIkdOAo=
github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
github.com/go-openapi/swag v0.19.0 h1:Kg7Wl7LkTPlmc393QZQ/5rQadPhi7pBVEMZxyTi0Ii8= github.com/go-openapi/swag v0.19.0 h1:Kg7Wl7LkTPlmc393QZQ/5rQadPhi7pBVEMZxyTi0Ii8=
@ -110,6 +113,10 @@ github.com/go-openapi/swag v0.19.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/
github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-redis/redis v6.14.0+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis v6.14.0+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4=
github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
@ -163,6 +170,7 @@ github.com/json-iterator/go v0.0.0-20180806060727-1624edc4454b/go.mod h1:+SdeFBv
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kolaente/caldav-go v3.0.1-0.20190524174923-9e5cd1688227+incompatible h1:PkEEpmbrFXlMul8cOplR8nkcIM/NDbx+H6fq2+vaKAA= github.com/kolaente/caldav-go v3.0.1-0.20190524174923-9e5cd1688227+incompatible h1:PkEEpmbrFXlMul8cOplR8nkcIM/NDbx+H6fq2+vaKAA=
github.com/kolaente/caldav-go v3.0.1-0.20190524174923-9e5cd1688227+incompatible/go.mod h1:y1UhTNI4g0hVymJrI6yJ5/ohy09hNBeU8iJEZjgdDOw= github.com/kolaente/caldav-go v3.0.1-0.20190524174923-9e5cd1688227+incompatible/go.mod h1:y1UhTNI4g0hVymJrI6yJ5/ohy09hNBeU8iJEZjgdDOw=
github.com/kolaente/echo/v4 v4.0.0-20190507190305-3725a216d803/go.mod h1:3LbYC6VkwmUnmLPZ8WFdHdQHG77e9GQbjyhWdb1QvC4= github.com/kolaente/echo/v4 v4.0.0-20190507190305-3725a216d803/go.mod h1:3LbYC6VkwmUnmLPZ8WFdHdQHG77e9GQbjyhWdb1QvC4=
@ -194,6 +202,8 @@ github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef h1:RZnRnSID1skF35j/15KJ6hKZkdIC/teQClJK5wP5LU4= github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef h1:RZnRnSID1skF35j/15KJ6hKZkdIC/teQClJK5wP5LU4=
github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef/go.mod h1:4LATl0uhhtytR6p9n1AlktDyIz4u2iUnWEdI3L/hXiw= github.com/laurent22/ical-go v0.1.1-0.20181107184520-7e5d6ade8eef/go.mod h1:4LATl0uhhtytR6p9n1AlktDyIz4u2iUnWEdI3L/hXiw=
github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
@ -329,6 +339,8 @@ github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo=
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8= github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=
@ -352,6 +364,8 @@ golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8U
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-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1 h1:anGSYQpPhQwXlwsu5wmfq0nWkCNaMEMUwAv13Y92hd8=
golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI= golang.org/x/lint v0.0.0-20190409202823-959b441ac422 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -378,6 +392,8 @@ golang.org/x/net v0.0.0-20191011234655-491137f69257 h1:ry8e2D+cwaV6hk7lb3aRTjjZo
golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191021144547-ec77196f6094 h1:5O4U9trLjNpuhpynaDsqwCk+Tw6seqJz1EbqbnzHrc8= golang.org/x/net v0.0.0-20191021144547-ec77196f6094 h1:5O4U9trLjNpuhpynaDsqwCk+Tw6seqJz1EbqbnzHrc8=
golang.org/x/net v0.0.0-20191021144547-ec77196f6094/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191021144547-ec77196f6094/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 h1:e6HwijUxhDe+hPNjZQQn9bA5PW3vNmnN64U2ZW759Lk=
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -411,6 +427,8 @@ golang.org/x/sys v0.0.0-20191023145028-b69606af412f h1:HNixo/W24k2W4EliZfUFl5ApI
golang.org/x/sys v0.0.0-20191023145028-b69606af412f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191023145028-b69606af412f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2 h1:I7efaDQAsIQmkTF+WSdcydwVWzK07Yuz8IFF8rNkDe0= golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2 h1:I7efaDQAsIQmkTF+WSdcydwVWzK07Yuz8IFF8rNkDe0=
golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 h1:ZBzSG/7F4eNKz2L3GE9o300RX0Az1Bw5HF7PDraD+qU=
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
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.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
@ -437,6 +455,8 @@ golang.org/x/tools v0.0.0-20191023163450-98e333b8b3a3 h1:4haCIJia9wHJUU7z9f7PTC8
golang.org/x/tools v0.0.0-20191023163450-98e333b8b3a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191023163450-98e333b8b3a3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3 h1:0vQisIa3mUFShxg7Xyq8WFt/ArQ1soDk5A5uF62IJCc= golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3 h1:0vQisIa3mUFShxg7Xyq8WFt/ArQ1soDk5A5uF62IJCc=
golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d h1:/iIZNFGxc/a7C3yWjGcnboV+Tkc7mxr+p6fDztwoxuM=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
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-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk= google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
@ -457,6 +477,8 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
gopkg.in/go-playground/validator.v9 v9.30.2/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
gopkg.in/stretchr/testify.v1 v1.2.2 h1:yhQC6Uy5CqibAIlk1wlusa/MJ3iAN49/BsR/dCCKz3M= gopkg.in/stretchr/testify.v1 v1.2.2 h1:yhQC6Uy5CqibAIlk1wlusa/MJ3iAN49/BsR/dCCKz3M=
@ -471,6 +493,8 @@ gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo=
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
src.techknowlogick.com/xgo v0.0.0-20190507142556-a5b29ecb0ff4 h1:DZKMg4qnT7UIyB5ZaC6ZqltF2K5KhA1oQ2PdxOLZ3jg= src.techknowlogick.com/xgo v0.0.0-20190507142556-a5b29ecb0ff4 h1:DZKMg4qnT7UIyB5ZaC6ZqltF2K5KhA1oQ2PdxOLZ3jg=

View file

@ -409,6 +409,27 @@ func TestLinkSharing(t *testing.T) {
}) })
t.Run("Tasks", func(t *testing.T) { t.Run("Tasks", func(t *testing.T) {
testHandlerTaskReadOnlyCollection := webHandlerTest{
linkShare: linkshareRead,
strFunc: func() handler.CObject {
return &models.TaskCollection{}
},
t: t,
}
testHandlerTaskWriteCollection := webHandlerTest{
linkShare: linkShareWrite,
strFunc: func() handler.CObject {
return &models.TaskCollection{}
},
t: t,
}
testHandlerTaskAdminCollection := webHandlerTest{
linkShare: linkShareAdmin,
strFunc: func() handler.CObject {
return &models.TaskCollection{}
},
t: t,
}
testHandlerTaskReadOnly := webHandlerTest{ testHandlerTaskReadOnly := webHandlerTest{
linkShare: linkshareRead, linkShare: linkshareRead,
strFunc: func() handler.CObject { strFunc: func() handler.CObject {
@ -432,7 +453,7 @@ func TestLinkSharing(t *testing.T) {
} }
t.Run("ReadAll", func(t *testing.T) { t.Run("ReadAll", func(t *testing.T) {
t.Run("Shared readonly", func(t *testing.T) { t.Run("Shared readonly", func(t *testing.T) {
rec, err := testHandlerTaskReadOnly.testReadAllWithLinkShare(nil, nil) rec, err := testHandlerTaskReadOnlyCollection.testReadAllWithLinkShare(nil, nil)
assert.NoError(t, err) assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `task #1`) assert.Contains(t, rec.Body.String(), `task #1`)
assert.Contains(t, rec.Body.String(), `task #2`) assert.Contains(t, rec.Body.String(), `task #2`)
@ -450,7 +471,7 @@ func TestLinkSharing(t *testing.T) {
assert.NotContains(t, rec.Body.String(), `task #14`) assert.NotContains(t, rec.Body.String(), `task #14`)
}) })
t.Run("Shared write", func(t *testing.T) { t.Run("Shared write", func(t *testing.T) {
rec, err := testHandlerTaskWrite.testReadAllWithLinkShare(nil, nil) rec, err := testHandlerTaskWriteCollection.testReadAllWithLinkShare(nil, nil)
assert.NoError(t, err) assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #2`) assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`) assert.NotContains(t, rec.Body.String(), `task #3`)
@ -467,7 +488,7 @@ func TestLinkSharing(t *testing.T) {
assert.NotContains(t, rec.Body.String(), `task #14`) assert.NotContains(t, rec.Body.String(), `task #14`)
}) })
t.Run("Shared admin", func(t *testing.T) { t.Run("Shared admin", func(t *testing.T) {
rec, err := testHandlerTaskAdmin.testReadAllWithLinkShare(nil, nil) rec, err := testHandlerTaskAdminCollection.testReadAllWithLinkShare(nil, nil)
assert.NoError(t, err) assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #2`) assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #4`) assert.NotContains(t, rec.Body.String(), `task #4`)

View file

@ -61,7 +61,7 @@ func TestList(t *testing.T) {
assert.NotContains(t, rec.Body.String(), `"title":"Test2"`) assert.NotContains(t, rec.Body.String(), `"title":"Test2"`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1,"username":"user1",`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1,"username":"user1",`)
assert.NotContains(t, rec.Body.String(), `"owner":{"id":2,"username":"user2",`) assert.NotContains(t, rec.Body.String(), `"owner":{"id":2,"username":"user2",`)
assert.Contains(t, rec.Body.String(), `"tasks":[{"id":1,"text":"task #1",`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Nonexisting", func(t *testing.T) { t.Run("Nonexisting", func(t *testing.T) {
_, err := testHandler.testReadOneWithUser(nil, map[string]string{"list": "9999"}) _, err := testHandler.testReadOneWithUser(nil, map[string]string{"list": "9999"})
@ -338,7 +338,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":""`) assert.Contains(t, rec.Body.String(), `"description":""`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Normal with description", func(t *testing.T) { t.Run("Normal with description", func(t *testing.T) {
rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "1"}, `{"title":"Lorem","description":"Lorem Ipsum"}`) rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "1"}, `{"title":"Lorem","description":"Lorem Ipsum"}`)
@ -346,7 +346,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":"Lorem Ipsum"`) assert.Contains(t, rec.Body.String(), `"description":"Lorem Ipsum"`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Nonexisting Namespace", func(t *testing.T) { t.Run("Nonexisting Namespace", func(t *testing.T) {
_, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "999999"}, `{"title":"Lorem"}`) _, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "999999"}, `{"title":"Lorem"}`)
@ -388,7 +388,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":""`) assert.Contains(t, rec.Body.String(), `"description":""`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Shared Via NamespaceTeam admin", func(t *testing.T) { t.Run("Shared Via NamespaceTeam admin", func(t *testing.T) {
rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "9"}, `{"title":"Lorem"}`) rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "9"}, `{"title":"Lorem"}`)
@ -396,7 +396,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":""`) assert.Contains(t, rec.Body.String(), `"description":""`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Shared Via NamespaceUser readonly", func(t *testing.T) { t.Run("Shared Via NamespaceUser readonly", func(t *testing.T) {
@ -410,7 +410,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":""`) assert.Contains(t, rec.Body.String(), `"description":""`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
t.Run("Shared Via NamespaceUser admin", func(t *testing.T) { t.Run("Shared Via NamespaceUser admin", func(t *testing.T) {
rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "12"}, `{"title":"Lorem"}`) rec, err := testHandler.testCreateWithUser(nil, map[string]string{"namespace": "12"}, `{"title":"Lorem"}`)
@ -418,7 +418,7 @@ func TestList(t *testing.T) {
assert.Contains(t, rec.Body.String(), `"title":"Lorem"`) assert.Contains(t, rec.Body.String(), `"title":"Lorem"`)
assert.Contains(t, rec.Body.String(), `"description":""`) assert.Contains(t, rec.Body.String(), `"description":""`)
assert.Contains(t, rec.Body.String(), `"owner":{"id":1`) assert.Contains(t, rec.Body.String(), `"owner":{"id":1`)
assert.Contains(t, rec.Body.String(), `"tasks":null`) assert.NotContains(t, rec.Body.String(), `"tasks":`)
}) })
}) })
}) })

View file

@ -33,11 +33,12 @@ func TestTaskCollection(t *testing.T) {
}, },
t: t, t: t,
} }
// Only run specific nested tests: t.Run("ReadAll on list", func(t *testing.T) {
// ^TestTask$/^Update$/^Update_task_items$/^Removing_Assignees_null$
t.Run("ReadAll", func(t *testing.T) { urlParams := map[string]string{"list": "1"}
t.Run("Normal", func(t *testing.T) { t.Run("Normal", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(nil, map[string]string{"list": "1"}) rec, err := testHandler.testReadAllWithUser(nil, urlParams)
assert.NoError(t, err) assert.NoError(t, err)
// Not using assert.Equal to avoid having the tests break every time we add new fixtures // Not using assert.Equal to avoid having the tests break every time we add new fixtures
assert.Contains(t, rec.Body.String(), `task #1`) assert.Contains(t, rec.Body.String(), `task #1`)
@ -70,6 +71,150 @@ func TestTaskCollection(t *testing.T) {
assert.Contains(t, rec.Body.String(), `task #28`) assert.Contains(t, rec.Body.String(), `task #28`)
assert.NotContains(t, rec.Body.String(), `task #32`) assert.NotContains(t, rec.Body.String(), `task #32`)
}) })
t.Run("Search", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"s": []string{"task #6"}}, urlParams)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.NotContains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.NotContains(t, rec.Body.String(), `task #7`)
assert.NotContains(t, rec.Body.String(), `task #8`)
assert.NotContains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("Sort Order", func(t *testing.T) {
// should equal priority desc
t.Run("by priority", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"priority"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,`)
})
t.Run("by priority desc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"prioritydesc"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,`)
})
t.Run("by priority asc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"priorityasc"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `{"id":33,"text":"task #33 with percent done","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0.5,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}}]`)
})
// should equal duedate desc
t.Run("by duedate", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedate"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
})
t.Run("by duedate desc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedatedesc"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
})
t.Run("by duedate asc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedateasc"}}, urlParams)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `{"id":6,"text":"task #6 lower due date","description":"","done":false,"doneAt":0,"dueDate":1543616724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}}]`)
})
t.Run("invalid parameter", func(t *testing.T) {
// Invalid parameter should not sort at all
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"loremipsum"}}, urlParams)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":1`)
assert.NotContains(t, rec.Body.String(), `{"id":4,"text":"task #4 low prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":1,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":3,"text":"task #3 high prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}}]`)
assert.NotContains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"dueDate":1543636724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
assert.NotContains(t, rec.Body.String(), `{"id":6,"text":"task #6 lower due date","description":"","done":false,"dueDate":1543616724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":5,"text":"task #5 higher due date","description":"","done":false,"dueDate":1543636724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}}]`)
})
})
t.Run("Date range", func(t *testing.T) {
t.Run("start and end date", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"startdate": []string{"1540000000"}, "enddate": []string{"1544700001"}}, urlParams)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("start date only", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"startdate": []string{"1540000000"}}, urlParams)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("end date only", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"enddate": []string{"1544700001"}}, urlParams)
assert.NoError(t, err)
// If no start date but an end date is specified, this should be null
// since we don't have any tasks in the fixtures with an end date >
// the current date.
assert.Equal(t, "null\n", rec.Body.String())
})
})
})
t.Run("ReadAll for all tasks", func(t *testing.T) {
t.Run("Normal", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(nil, nil)
assert.NoError(t, err)
// Not using assert.Equal to avoid having the tests break every time we add new fixtures
assert.Contains(t, rec.Body.String(), `task #1`)
assert.Contains(t, rec.Body.String(), `task #2`)
assert.Contains(t, rec.Body.String(), `task #3`)
assert.Contains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.Contains(t, rec.Body.String(), `task #10`)
assert.Contains(t, rec.Body.String(), `task #11`)
assert.Contains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
assert.Contains(t, rec.Body.String(), `task #15`) // Shared via team readonly
assert.Contains(t, rec.Body.String(), `task #16`) // Shared via team write
assert.Contains(t, rec.Body.String(), `task #17`) // Shared via team admin
assert.Contains(t, rec.Body.String(), `task #18`) // Shared via user readonly
assert.Contains(t, rec.Body.String(), `task #19`) // Shared via user write
assert.Contains(t, rec.Body.String(), `task #20`) // Shared via user admin
assert.Contains(t, rec.Body.String(), `task #21`) // Shared via namespace team readonly
assert.Contains(t, rec.Body.String(), `task #22`) // Shared via namespace team write
assert.Contains(t, rec.Body.String(), `task #23`) // Shared via namespace team admin
assert.Contains(t, rec.Body.String(), `task #24`) // Shared via namespace user readonly
assert.Contains(t, rec.Body.String(), `task #25`) // Shared via namespace user write
assert.Contains(t, rec.Body.String(), `task #26`) // Shared via namespace user admin
// TODO: Add some cases where the user has access to the list, somhow shared
})
t.Run("Search", func(t *testing.T) { t.Run("Search", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"s": []string{"task #6"}}, nil) rec, err := testHandler.testReadAllWithUser(url.Values{"s": []string{"task #6"}}, nil)
assert.NoError(t, err) assert.NoError(t, err)

View file

@ -21,7 +21,6 @@ import (
"code.vikunja.io/web/handler" "code.vikunja.io/web/handler"
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"net/url"
"testing" "testing"
) )
@ -35,149 +34,6 @@ func TestTask(t *testing.T) {
} }
// Only run specific nested tests: // Only run specific nested tests:
// ^TestTask$/^Update$/^Update_task_items$/^Removing_Assignees_null$ // ^TestTask$/^Update$/^Update_task_items$/^Removing_Assignees_null$
t.Run("ReadAll", func(t *testing.T) {
t.Run("Normal", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(nil, nil)
assert.NoError(t, err)
// Not using assert.Equal to avoid having the tests break every time we add new fixtures
assert.Contains(t, rec.Body.String(), `task #1`)
assert.Contains(t, rec.Body.String(), `task #2`)
assert.Contains(t, rec.Body.String(), `task #3`)
assert.Contains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.Contains(t, rec.Body.String(), `task #10`)
assert.Contains(t, rec.Body.String(), `task #11`)
assert.Contains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
assert.Contains(t, rec.Body.String(), `task #15`) // Shared via team readonly
assert.Contains(t, rec.Body.String(), `task #16`) // Shared via team write
assert.Contains(t, rec.Body.String(), `task #17`) // Shared via team admin
assert.Contains(t, rec.Body.String(), `task #18`) // Shared via user readonly
assert.Contains(t, rec.Body.String(), `task #19`) // Shared via user write
assert.Contains(t, rec.Body.String(), `task #20`) // Shared via user admin
assert.Contains(t, rec.Body.String(), `task #21`) // Shared via namespace team readonly
assert.Contains(t, rec.Body.String(), `task #22`) // Shared via namespace team write
assert.Contains(t, rec.Body.String(), `task #23`) // Shared via namespace team admin
assert.Contains(t, rec.Body.String(), `task #24`) // Shared via namespace user readonly
assert.Contains(t, rec.Body.String(), `task #25`) // Shared via namespace user write
assert.Contains(t, rec.Body.String(), `task #26`) // Shared via namespace user admin
// TODO: Add some cases where the user has access to the list, somhow shared
})
t.Run("Search", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"s": []string{"task #6"}}, nil)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.NotContains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.NotContains(t, rec.Body.String(), `task #7`)
assert.NotContains(t, rec.Body.String(), `task #8`)
assert.NotContains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("Sort Order", func(t *testing.T) {
// should equal priority desc
t.Run("by priority", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"priority"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,`)
})
t.Run("by priority desc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"prioritydesc"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,`)
})
t.Run("by priority asc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"priorityasc"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `{"id":33,"text":"task #33 with percent done","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0.5,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":1,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":3,"text":"task #3 high prio","description":"","done":false,"doneAt":0,"dueDate":0,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}}]`)
})
// should equal duedate desc
t.Run("by duedate", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedate"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
})
t.Run("by duedate desc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedatedesc"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
})
t.Run("by duedate asc", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"duedateasc"}}, nil)
assert.NoError(t, err)
assert.Contains(t, rec.Body.String(), `{"id":6,"text":"task #6 lower due date","description":"","done":false,"doneAt":0,"dueDate":1543616724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}},{"id":5,"text":"task #5 higher due date","description":"","done":false,"doneAt":0,"dueDate":1543636724,"reminderDates":null,"listID":1,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","percentDone":0,"related_tasks":{},"attachments":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":1,"username":"user1","avatarUrl":"111d68d06e2d317b5a59c2c6c5bad808","created":0,"updated":0}}]`)
})
t.Run("invalid parameter", func(t *testing.T) {
// Invalid parameter should not sort at all
rec, err := testHandler.testReadAllWithUser(url.Values{"sort": []string{"loremipsum"}}, nil)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `[{"id":3,"text":"task #3 high prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":4,"text":"task #4 low prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":1`)
assert.NotContains(t, rec.Body.String(), `{"id":4,"text":"task #4 low prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":1,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":3,"text":"task #3 high prio","description":"","done":false,"dueDate":0,"reminderDates":null,"repeatAfter":0,"priority":100,"startDate":0,"endDate":0,"assignees":null,"labels":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}}]`)
assert.NotContains(t, rec.Body.String(), `[{"id":5,"text":"task #5 higher due date","description":"","done":false,"dueDate":1543636724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":6,"text":"task #6 lower due date"`)
assert.NotContains(t, rec.Body.String(), `{"id":6,"text":"task #6 lower due date","description":"","done":false,"dueDate":1543616724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"hexColor":"","created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}},{"id":5,"text":"task #5 higher due date","description":"","done":false,"dueDate":1543636724,"reminderDates":null,"repeatAfter":0,"priority":0,"startDate":0,"endDate":0,"assignees":null,"labels":null,"created":1543626724,"updated":1543626724,"createdBy":{"id":0,"username":"","email":"","created":0,"updated":0}}]`)
})
})
t.Run("Date range", func(t *testing.T) {
t.Run("start and end date", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"startdate": []string{"1540000000"}, "enddate": []string{"1544700001"}}, nil)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("start date only", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"startdate": []string{"1540000000"}}, nil)
assert.NoError(t, err)
assert.NotContains(t, rec.Body.String(), `task #1`)
assert.NotContains(t, rec.Body.String(), `task #2`)
assert.NotContains(t, rec.Body.String(), `task #3`)
assert.NotContains(t, rec.Body.String(), `task #4`)
assert.Contains(t, rec.Body.String(), `task #5`)
assert.Contains(t, rec.Body.String(), `task #6`)
assert.Contains(t, rec.Body.String(), `task #7`)
assert.Contains(t, rec.Body.String(), `task #8`)
assert.Contains(t, rec.Body.String(), `task #9`)
assert.NotContains(t, rec.Body.String(), `task #10`)
assert.NotContains(t, rec.Body.String(), `task #11`)
assert.NotContains(t, rec.Body.String(), `task #12`)
assert.NotContains(t, rec.Body.String(), `task #13`)
assert.NotContains(t, rec.Body.String(), `task #14`)
})
t.Run("end date only", func(t *testing.T) {
rec, err := testHandler.testReadAllWithUser(url.Values{"enddate": []string{"1544700001"}}, nil)
assert.NoError(t, err)
// If no start date but an end date is specified, this should be null
// since we don't have any tasks in the fixtures with an end date >
// the current date.
assert.Equal(t, "null\n", rec.Body.String())
})
})
})
t.Run("Update", func(t *testing.T) { t.Run("Update", func(t *testing.T) {
t.Run("Update task items", func(t *testing.T) { t.Run("Update task items", func(t *testing.T) {
t.Run("Text", func(t *testing.T) { t.Run("Text", func(t *testing.T) {

View file

@ -35,7 +35,8 @@ type List struct {
// The user who created this list. // The user who created this list.
Owner *User `xorm:"-" json:"owner" valid:"-"` Owner *User `xorm:"-" json:"owner" valid:"-"`
// An array of tasks which belong to the list. // An array of tasks which belong to the list.
Tasks []*Task `xorm:"-" json:"tasks"` // Deprecated: you should use the dedicated task list endpoint because it has support for pagination and filtering
Tasks []*Task `xorm:"-" json:"-"`
// A unix timestamp when this list was created. You cannot change this value. // A unix timestamp when this list was created. You cannot change this value.
Created int64 `xorm:"created not null" json:"created"` Created int64 `xorm:"created not null" json:"created"`
@ -122,12 +123,6 @@ func (l *List) ReadAll(a web.Auth, search string, page int, perPage int) (result
// @Failure 500 {object} models.Message "Internal error" // @Failure 500 {object} models.Message "Internal error"
// @Router /lists/{id} [get] // @Router /lists/{id} [get]
func (l *List) ReadOne() (err error) { func (l *List) ReadOne() (err error) {
// Get list tasks
l.Tasks, err = GetTasksByListID(l.ID)
if err != nil {
return err
}
// Get list owner // Get list owner
l.Owner, err = GetUserByID(l.OwnerID) l.Owner, err = GetUserByID(l.OwnerID)
return return
@ -233,20 +228,11 @@ func getRawListsForUser(search string, u *User, page int, perPage int) (lists []
// AddListDetails adds owner user objects and list tasks to all lists in the slice // AddListDetails adds owner user objects and list tasks to all lists in the slice
func AddListDetails(lists []*List) (err error) { func AddListDetails(lists []*List) (err error) {
var listIDs []int64
var ownerIDs []int64 var ownerIDs []int64
for _, l := range lists { for _, l := range lists {
listIDs = append(listIDs, l.ID)
ownerIDs = append(ownerIDs, l.OwnerID) ownerIDs = append(ownerIDs, l.OwnerID)
} }
// Get all tasks
ts := []*Task{}
err = x.In("list_id", listIDs).Find(&ts)
if err != nil {
return
}
// Get all list owners // Get all list owners
owners := []*User{} owners := []*User{}
err = x.In("id", ownerIDs).Find(&owners) err = x.In("id", ownerIDs).Find(&owners)
@ -263,13 +249,6 @@ func AddListDetails(lists []*List) (err error) {
break break
} }
} }
// Tasks
for _, task := range ts {
if task.ListID == list.ID {
lists[in].Tasks = append(lists[in].Tasks, task)
}
}
} }
return return

View file

@ -471,22 +471,11 @@ func TestTask_ReadAll(t *testing.T) {
} }
type fields struct { type fields struct {
ID int64
Text string
Description string
Done bool
DueDateUnix int64
RemindersUnix []int64
CreatedByID int64
ListID int64 ListID int64
RepeatAfter int64
Priority int64
Sorting string Sorting string
StartDateSortUnix int64 StartDateSortUnix int64
EndDateSortUnix int64 EndDateSortUnix int64
Created int64 Lists []*List
Updated int64
CreatedBy *User
CRUDable web.CRUDable CRUDable web.CRUDable
Rights web.Rights Rights web.Rights
} }
@ -708,23 +697,11 @@ func TestTask_ReadAll(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
lt := &Task{ lt := &TaskCollection{
ID: tt.fields.ID,
Text: tt.fields.Text,
Description: tt.fields.Description,
Done: tt.fields.Done,
DueDateUnix: tt.fields.DueDateUnix,
RemindersUnix: tt.fields.RemindersUnix,
CreatedByID: tt.fields.CreatedByID,
ListID: tt.fields.ListID, ListID: tt.fields.ListID,
RepeatAfter: tt.fields.RepeatAfter,
Priority: tt.fields.Priority,
Sorting: tt.fields.Sorting, Sorting: tt.fields.Sorting,
StartDateSortUnix: tt.fields.StartDateSortUnix, StartDateSortUnix: tt.fields.StartDateSortUnix,
EndDateSortUnix: tt.fields.EndDateSortUnix, EndDateSortUnix: tt.fields.EndDateSortUnix,
Created: tt.fields.Created,
Updated: tt.fields.Updated,
CreatedBy: tt.fields.CreatedBy,
CRUDable: tt.fields.CRUDable, CRUDable: tt.fields.CRUDable,
Rights: tt.fields.Rights, Rights: tt.fields.Rights,
} }

View file

@ -117,7 +117,16 @@ const (
SortTasksByPriorityDesc SortTasksByPriorityDesc
) )
// ReadAll gets all tasks for a user type taskOptions struct {
search string
sortby SortBy
startDate time.Time
endDate time.Time
page int
perPage int
}
// ReadAll is a dummy function to still have that endpoint documented
// @Summary Get tasks // @Summary Get tasks
// @Description Returns all tasks on any list the user has access to. // @Description Returns all tasks on any list the user has access to.
// @tags task // @tags task
@ -134,21 +143,7 @@ const (
// @Failure 500 {object} models.Message "Internal error" // @Failure 500 {object} models.Message "Internal error"
// @Router /tasks/all [get] // @Router /tasks/all [get]
func (t *Task) ReadAll(a web.Auth, search string, page int, perPage int) (result interface{}, resultCount int, totalItems int64, err error) { func (t *Task) ReadAll(a web.Auth, search string, page int, perPage int) (result interface{}, resultCount int, totalItems int64, err error) {
tc := &TaskCollection{ return nil, 0, 0, nil
Sorting: t.Sorting,
StartDateSortUnix: t.StartDateSortUnix,
EndDateSortUnix: t.EndDateSortUnix,
}
return tc.ReadAll(a, search, page, perPage)
}
type taskOptions struct {
search string
sortby SortBy
startDate time.Time
endDate time.Time
page int
perPage int
} }
func getRawTasksForLists(lists []*List, opts *taskOptions) (taskMap map[int64]*Task, resultCount int, totalItems int64, err error) { func getRawTasksForLists(lists []*List, opts *taskOptions) (taskMap map[int64]*Task, resultCount int, totalItems int64, err error) {

View file

@ -215,6 +215,13 @@ func registerAPIRoutes(a *echo.Group) {
a.DELETE("/lists/:list/shares/:share", listSharingHandler.DeleteWeb) a.DELETE("/lists/:list/shares/:share", listSharingHandler.DeleteWeb)
} }
taskCollectionHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject {
return &models.TaskCollection{}
},
}
a.GET("/lists/:list/tasks", taskCollectionHandler.ReadAllWeb)
taskHandler := &handler.WebHandler{ taskHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject { EmptyStruct: func() handler.CObject {
return &models.Task{} return &models.Task{}
@ -222,17 +229,10 @@ func registerAPIRoutes(a *echo.Group) {
} }
a.PUT("/lists/:list", taskHandler.CreateWeb) a.PUT("/lists/:list", taskHandler.CreateWeb)
a.GET("/tasks/:listtask", taskHandler.ReadOneWeb) a.GET("/tasks/:listtask", taskHandler.ReadOneWeb)
a.GET("/tasks/all", taskHandler.ReadAllWeb) a.GET("/tasks/all", taskCollectionHandler.ReadAllWeb)
a.DELETE("/tasks/:listtask", taskHandler.DeleteWeb) a.DELETE("/tasks/:listtask", taskHandler.DeleteWeb)
a.POST("/tasks/:listtask", taskHandler.UpdateWeb) a.POST("/tasks/:listtask", taskHandler.UpdateWeb)
taskCollectionHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject {
return &models.TaskCollection{}
},
}
a.GET("/lists/:list/tasks", taskCollectionHandler.ReadAllWeb)
bulkTaskHandler := &handler.WebHandler{ bulkTaskHandler := &handler.WebHandler{
EmptyStruct: func() handler.CObject { EmptyStruct: func() handler.CObject {
return &models.BulkTask{} return &models.BulkTask{}

View file

@ -1,6 +1,6 @@
// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag at // This file was generated by swaggo/swag at
// 2019-11-29 18:11:53.766019702 +0100 CET m=+0.153156633 // 2019-12-01 13:20:36.822585642 +0100 CET m=+0.129079038
package swagger package swagger
@ -407,7 +407,7 @@ var doc = `{
"JWTKeyAuth": [] "JWTKeyAuth": []
} }
], ],
"description": "Returns a team by its ID.", "description": "Returns a list by its ID.",
"consumes": [ "consumes": [
"application/json" "application/json"
], ],
@ -415,13 +415,13 @@ var doc = `{
"application/json" "application/json"
], ],
"tags": [ "tags": [
"team" "list"
], ],
"summary": "Gets one team", "summary": "Gets one list",
"parameters": [ "parameters": [
{ {
"type": "integer", "type": "integer",
"description": "Team ID", "description": "List ID",
"name": "id", "name": "id",
"in": "path", "in": "path",
"required": true "required": true
@ -429,13 +429,13 @@ var doc = `{
], ],
"responses": { "responses": {
"200": { "200": {
"description": "The team", "description": "The list",
"schema": { "schema": {
"$ref": "#/definitions/models.Team" "$ref": "#/definitions/models.List"
} }
}, },
"403": { "403": {
"description": "The user does not have access to the team", "description": "The user does not have access to the list",
"schema": { "schema": {
"$ref": "#/definitions/code.vikunja.io.web.HTTPError" "$ref": "#/definitions/code.vikunja.io.web.HTTPError"
} }

View file

@ -389,7 +389,7 @@
"JWTKeyAuth": [] "JWTKeyAuth": []
} }
], ],
"description": "Returns a team by its ID.", "description": "Returns a list by its ID.",
"consumes": [ "consumes": [
"application/json" "application/json"
], ],
@ -397,13 +397,13 @@
"application/json" "application/json"
], ],
"tags": [ "tags": [
"team" "list"
], ],
"summary": "Gets one team", "summary": "Gets one list",
"parameters": [ "parameters": [
{ {
"type": "integer", "type": "integer",
"description": "Team ID", "description": "List ID",
"name": "id", "name": "id",
"in": "path", "in": "path",
"required": true "required": true
@ -411,13 +411,13 @@
], ],
"responses": { "responses": {
"200": { "200": {
"description": "The team", "description": "The list",
"schema": { "schema": {
"$ref": "#/definitions/models.Team" "$ref": "#/definitions/models.List"
} }
}, },
"403": { "403": {
"description": "The user does not have access to the team", "description": "The user does not have access to the list",
"schema": { "schema": {
"$ref": "#/definitions/code.vikunja.io/web.HTTPError" "$ref": "#/definitions/code.vikunja.io/web.HTTPError"
} }

View file

@ -1138,9 +1138,9 @@ paths:
get: get:
consumes: consumes:
- application/json - application/json
description: Returns a team by its ID. description: Returns a list by its ID.
parameters: parameters:
- description: Team ID - description: List ID
in: path in: path
name: id name: id
required: true required: true
@ -1149,11 +1149,11 @@ paths:
- application/json - application/json
responses: responses:
"200": "200":
description: The team description: The list
schema: schema:
$ref: '#/definitions/models.Team' $ref: '#/definitions/models.List'
"403": "403":
description: The user does not have access to the team description: The user does not have access to the list
schema: schema:
$ref: '#/definitions/code.vikunja.io/web.HTTPError' $ref: '#/definitions/code.vikunja.io/web.HTTPError'
"500": "500":
@ -1162,9 +1162,9 @@ paths:
$ref: '#/definitions/models.Message' $ref: '#/definitions/models.Message'
security: security:
- JWTKeyAuth: [] - JWTKeyAuth: []
summary: Gets one team summary: Gets one list
tags: tags:
- team - list
post: post:
consumes: consumes:
- application/json - application/json

File diff suppressed because one or more lines are too long

View file

@ -72,6 +72,7 @@ func (r *Ref) IsValidURI(basepaths ...string) bool {
if err != nil { if err != nil {
return false return false
} }
defer rr.Body.Close()
return rr.StatusCode/100 == 2 return rr.StatusCode/100 == 2
} }

View file

@ -28,8 +28,8 @@ before_script:
script: script:
- go run build.go vet - go run build.go vet
- go run build.go test - go run build.go test
- go run build.go gfmrun - go run build.go gfmrun docs/v1/manual.md
- go run build.go toc - go run build.go toc docs/v1/manual.md
after_success: after_success:
- bash <(curl -s https://codecov.io/bash) - bash <(curl -s https://codecov.io/bash)

View file

@ -1,504 +0,0 @@
# Change Log
**ATTN**: This project uses [semantic versioning](http://semver.org/).
## [Unreleased]
## [1.22.1] - 2019-09-11
### Fixed
* Hide output of hidden commands on man pages in [urfave/cli/pull/889](https://github.com/urfave/cli/pull/889) via [@crosbymichael](https://github.com/crosbymichael)
* Don't generate fish completion for hidden commands [urfave/cli/pull/891](https://github.com/urfave/891) via [@saschagrunert](https://github.com/saschagrunert)
* Using short flag names for required flags throws an error in [urfave/cli/pull/890](https://github.com/urfave/cli/pull/890) via [@asahasrabuddhe](https://github.com/asahasrabuddhe)
### Changed
* Remove flag code generation logic, legacy python test runner in [urfave/cli/pull/883](https://github.com/urfave/cli/pull/883) via [@asahasrabuddhe](https://github.com/asahasrabuddhe)
* Enable Go Modules support, drop support for `Go 1.10` add support for `Go 1.13` in [urfave/cli/pull/885](https://github.com/urfave/cli/pull/885) via [@asahasrabuddhe](https://github.com/asahasrabuddhe)
## [1.22.0] - 2019-09-07
### Fixed
* Fix Subcommands not falling back to `app.ExitEventHandler` in [urfave/cli/pull/856](https://github.com/urfave/cli/pull/856) via [@FaranIdo](https://github.com/FaranIdo)
### Changed
* Clarify that altsrc supports both TOML and JSON in [urfave/cli/pull/774](https://github.com/urfave/cli/pull/774) via [@whereswaldon](https://github.com/whereswaldon)
* Made the exit code example more clear in [urfave/cli/pull/823](https://github.com/urfave/cli/pull/823) via [@xordspar0](https://github.com/xordspar0)
* Removed the use of python for internal flag generation in [urfave/cli/pull/836](https://github.com/urfave/cli/pull/836) via [@asahasrabuddhe](https://github.com/asahasrabuddhe)
* Changed the supported go versions to `1.10`, `1.11`, `1.12` in [urfave/cli/pull/843](https://github.com/urfave/cli/pull/843) via [@lafriks](https://github.com/lafriks)
* Changed the v1 releases section in the readme in [urfave/cli/pull/862](https://github.com/urfave/cli/pull/862) via [@russoj88](https://github.com/russoj88)
* Cleaned up go modules in [urfave/cli/pull/874](https://github.com/urfave/cli/pull/874) via [@saschagrunert](https://github.com/saschagrunert)
### Added
* Added `UseShortOptionHandling` for combining short flags in [urfave/cli/pull/735](https://github.com/urfave/cli/pull/735) via [@rliebz](https://github.com/rliebz)
* Added support for flags bash completion in [urfave/cli/pull/808](https://github.com/urfave/cli/pull/808) via [@yogeshlonkar](https://github.com/yogeshlonkar)
* Added the `TakesFile` indicator to flag in [urfave/cli/pull/851](https://github.com/urfave/cli/pull/851) via [@saschagrunert](https://github.com/saschagrunert)
* Added fish shell completion support in [urfave/cli/pull/848](https://github.com/urfave/cli/pull/848) via [@saschagrunert](https://github.com/saschagrunert)
## [1.21.0] - 2019-08-02
### Fixed
* Fix using "slice" flag types with `EnvVar` in [urfave/cli/pull/687](https://github.com/urfave/cli/pull/687) via [@joshuarubin](https://github.com/joshuarubin)
* Fix regression of `SkipFlagParsing` behavior in [urfave/cli/pull/697](https://github.com/urfave/cli/pull/697) via [@jszwedko](https://github.com/jszwedko)
* Fix handling `ShortOptions` and `SkipArgReorder` in [urfave/cli/pull/686](https://github.com/urfave/cli/pull/686) via [@baude](https://github.com/baude)
* Fix args reordering when bool flags are present in [urfave/cli/pull/712](https://github.com/urfave/cli/pull/712) via [@windler](https://github.com/windler)
* Fix parsing of short options in [urfave/cli/pull/758](https://github.com/urfave/cli/pull/758) via [@vrothberg](https://github.com/vrothberg)
* Fix unaligned indents for the command help messages in [urfave/cli/pull/806](https://github.com/urfave/cli/pull/806) via [@mingrammer](https://github.com/mingrammer)
### Changed
* Cleaned up help output in [urfave/cli/pull/664](https://github.com/urfave/cli/pull/664) via [@maguro](https://github.com/maguro)
* Remove redundant nil checks in [urfave/cli/pull/773](https://github.com/urfave/cli/pull/773) via [@teresy](https://github.com/teresy)
* Case is now considered when sorting strings in [urfave/cli/pull/676](https://github.com/urfave/cli/pull/676) via [@rliebz](https://github.com/rliebz)
### Added
* Added _"required flags"_ support in [urfave/cli/pull/819](https://github.com/urfave/cli/pull/819) via [@lynncyrin](https://github.com/lynncyrin/)
* Backport JSON `InputSource` to v1 in [urfave/cli/pull/598](https://github.com/urfave/cli/pull/598) via [@jszwedko](https://github.com/jszwedko)
* Allow more customization of flag help strings in [urfave/cli/pull/661](https://github.com/urfave/cli/pull/661) via [@rliebz](https://github.com/rliebz)
* Allow custom `ExitError` handler function in [urfave/cli/pull/628](https://github.com/urfave/cli/pull/628) via [@phinnaeus](https://github.com/phinnaeus)
* Allow loading a variable from a file in [urfave/cli/pull/675](https://github.com/urfave/cli/pull/675) via [@jmccann](https://github.com/jmccann)
* Allow combining short bool names in [urfave/cli/pull/684](https://github.com/urfave/cli/pull/684) via [@baude](https://github.com/baude)
* Added test coverage to context in [urfave/cli/pull/788](https://github.com/urfave/cli/pull/788) via [@benzvan](https://github.com/benzvan)
* Added go module support in [urfave/cli/pull/831](https://github.com/urfave/cli/pull/831) via [@saschagrunert](https://github.com/saschagrunert)
## [1.20.0] - 2017-08-10
### Fixed
* `HandleExitCoder` is now correctly iterates over all errors in
a `MultiError`. The exit code is the exit code of the last error or `1` if
there are no `ExitCoder`s in the `MultiError`.
* Fixed YAML file loading on Windows (previously would fail validate the file path)
* Subcommand `Usage`, `Description`, `ArgsUsage`, `OnUsageError` correctly
propogated
* `ErrWriter` is now passed downwards through command structure to avoid the
need to redefine it
* Pass `Command` context into `OnUsageError` rather than parent context so that
all fields are avaiable
* Errors occuring in `Before` funcs are no longer double printed
* Use `UsageText` in the help templates for commands and subcommands if
defined; otherwise build the usage as before (was previously ignoring this
field)
* `IsSet` and `GlobalIsSet` now correctly return whether a flag is set if
a program calls `Set` or `GlobalSet` directly after flag parsing (would
previously only return `true` if the flag was set during parsing)
### Changed
* No longer exit the program on command/subcommand error if the error raised is
not an `OsExiter`. This exiting behavior was introduced in 1.19.0, but was
determined to be a regression in functionality. See [the
PR](https://github.com/urfave/cli/pull/595) for discussion.
### Added
* `CommandsByName` type was added to make it easy to sort `Command`s by name,
alphabetically
* `altsrc` now handles loading of string and int arrays from TOML
* Support for definition of custom help templates for `App` via
`CustomAppHelpTemplate`
* Support for arbitrary key/value fields on `App` to be used with
`CustomAppHelpTemplate` via `ExtraInfo`
* `HelpFlag`, `VersionFlag`, and `BashCompletionFlag` changed to explictly be
`cli.Flag`s allowing for the use of custom flags satisfying the `cli.Flag`
interface to be used.
## [1.19.1] - 2016-11-21
### Fixed
- Fixes regression introduced in 1.19.0 where using an `ActionFunc` as
the `Action` for a command would cause it to error rather than calling the
function. Should not have a affected declarative cases using `func(c
*cli.Context) err)`.
- Shell completion now handles the case where the user specifies
`--generate-bash-completion` immediately after a flag that takes an argument.
Previously it call the application with `--generate-bash-completion` as the
flag value.
## [1.19.0] - 2016-11-19
### Added
- `FlagsByName` was added to make it easy to sort flags (e.g. `sort.Sort(cli.FlagsByName(app.Flags))`)
- A `Description` field was added to `App` for a more detailed description of
the application (similar to the existing `Description` field on `Command`)
- Flag type code generation via `go generate`
- Write to stderr and exit 1 if action returns non-nil error
- Added support for TOML to the `altsrc` loader
- `SkipArgReorder` was added to allow users to skip the argument reordering.
This is useful if you want to consider all "flags" after an argument as
arguments rather than flags (the default behavior of the stdlib `flag`
library). This is backported functionality from the [removal of the flag
reordering](https://github.com/urfave/cli/pull/398) in the unreleased version
2
- For formatted errors (those implementing `ErrorFormatter`), the errors will
be formatted during output. Compatible with `pkg/errors`.
### Changed
- Raise minimum tested/supported Go version to 1.2+
### Fixed
- Consider empty environment variables as set (previously environment variables
with the equivalent of `""` would be skipped rather than their value used).
- Return an error if the value in a given environment variable cannot be parsed
as the flag type. Previously these errors were silently swallowed.
- Print full error when an invalid flag is specified (which includes the invalid flag)
- `App.Writer` defaults to `stdout` when `nil`
- If no action is specified on a command or app, the help is now printed instead of `panic`ing
- `App.Metadata` is initialized automatically now (previously was `nil` unless initialized)
- Correctly show help message if `-h` is provided to a subcommand
- `context.(Global)IsSet` now respects environment variables. Previously it
would return `false` if a flag was specified in the environment rather than
as an argument
- Removed deprecation warnings to STDERR to avoid them leaking to the end-user
- `altsrc`s import paths were updated to use `gopkg.in/urfave/cli.v1`. This
fixes issues that occurred when `gopkg.in/urfave/cli.v1` was imported as well
as `altsrc` where Go would complain that the types didn't match
## [1.18.1] - 2016-08-28
### Fixed
- Removed deprecation warnings to STDERR to avoid them leaking to the end-user (backported)
## [1.18.0] - 2016-06-27
### Added
- `./runtests` test runner with coverage tracking by default
- testing on OS X
- testing on Windows
- `UintFlag`, `Uint64Flag`, and `Int64Flag` types and supporting code
### Changed
- Use spaces for alignment in help/usage output instead of tabs, making the
output alignment consistent regardless of tab width
### Fixed
- Printing of command aliases in help text
- Printing of visible flags for both struct and struct pointer flags
- Display the `help` subcommand when using `CommandCategories`
- No longer swallows `panic`s that occur within the `Action`s themselves when
detecting the signature of the `Action` field
## [1.17.1] - 2016-08-28
### Fixed
- Removed deprecation warnings to STDERR to avoid them leaking to the end-user
## [1.17.0] - 2016-05-09
### Added
- Pluggable flag-level help text rendering via `cli.DefaultFlagStringFunc`
- `context.GlobalBoolT` was added as an analogue to `context.GlobalBool`
- Support for hiding commands by setting `Hidden: true` -- this will hide the
commands in help output
### Changed
- `Float64Flag`, `IntFlag`, and `DurationFlag` default values are no longer
quoted in help text output.
- All flag types now include `(default: {value})` strings following usage when a
default value can be (reasonably) detected.
- `IntSliceFlag` and `StringSliceFlag` usage strings are now more consistent
with non-slice flag types
- Apps now exit with a code of 3 if an unknown subcommand is specified
(previously they printed "No help topic for...", but still exited 0. This
makes it easier to script around apps built using `cli` since they can trust
that a 0 exit code indicated a successful execution.
- cleanups based on [Go Report Card
feedback](https://goreportcard.com/report/github.com/urfave/cli)
## [1.16.1] - 2016-08-28
### Fixed
- Removed deprecation warnings to STDERR to avoid them leaking to the end-user
## [1.16.0] - 2016-05-02
### Added
- `Hidden` field on all flag struct types to omit from generated help text
### Changed
- `BashCompletionFlag` (`--enable-bash-completion`) is now omitted from
generated help text via the `Hidden` field
### Fixed
- handling of error values in `HandleAction` and `HandleExitCoder`
## [1.15.0] - 2016-04-30
### Added
- This file!
- Support for placeholders in flag usage strings
- `App.Metadata` map for arbitrary data/state management
- `Set` and `GlobalSet` methods on `*cli.Context` for altering values after
parsing.
- Support for nested lookup of dot-delimited keys in structures loaded from
YAML.
### Changed
- The `App.Action` and `Command.Action` now prefer a return signature of
`func(*cli.Context) error`, as defined by `cli.ActionFunc`. If a non-nil
`error` is returned, there may be two outcomes:
- If the error fulfills `cli.ExitCoder`, then `os.Exit` will be called
automatically
- Else the error is bubbled up and returned from `App.Run`
- Specifying an `Action` with the legacy return signature of
`func(*cli.Context)` will produce a deprecation message to stderr
- Specifying an `Action` that is not a `func` type will produce a non-zero exit
from `App.Run`
- Specifying an `Action` func that has an invalid (input) signature will
produce a non-zero exit from `App.Run`
### Deprecated
- <a name="deprecated-cli-app-runandexitonerror"></a>
`cli.App.RunAndExitOnError`, which should now be done by returning an error
that fulfills `cli.ExitCoder` to `cli.App.Run`.
- <a name="deprecated-cli-app-action-signature"></a> the legacy signature for
`cli.App.Action` of `func(*cli.Context)`, which should now have a return
signature of `func(*cli.Context) error`, as defined by `cli.ActionFunc`.
### Fixed
- Added missing `*cli.Context.GlobalFloat64` method
## [1.14.0] - 2016-04-03 (backfilled 2016-04-25)
### Added
- Codebeat badge
- Support for categorization via `CategorizedHelp` and `Categories` on app.
### Changed
- Use `filepath.Base` instead of `path.Base` in `Name` and `HelpName`.
### Fixed
- Ensure version is not shown in help text when `HideVersion` set.
## [1.13.0] - 2016-03-06 (backfilled 2016-04-25)
### Added
- YAML file input support.
- `NArg` method on context.
## [1.12.0] - 2016-02-17 (backfilled 2016-04-25)
### Added
- Custom usage error handling.
- Custom text support in `USAGE` section of help output.
- Improved help messages for empty strings.
- AppVeyor CI configuration.
### Changed
- Removed `panic` from default help printer func.
- De-duping and optimizations.
### Fixed
- Correctly handle `Before`/`After` at command level when no subcommands.
- Case of literal `-` argument causing flag reordering.
- Environment variable hints on Windows.
- Docs updates.
## [1.11.1] - 2015-12-21 (backfilled 2016-04-25)
### Changed
- Use `path.Base` in `Name` and `HelpName`
- Export `GetName` on flag types.
### Fixed
- Flag parsing when skipping is enabled.
- Test output cleanup.
- Move completion check to account for empty input case.
## [1.11.0] - 2015-11-15 (backfilled 2016-04-25)
### Added
- Destination scan support for flags.
- Testing against `tip` in Travis CI config.
### Changed
- Go version in Travis CI config.
### Fixed
- Removed redundant tests.
- Use correct example naming in tests.
## [1.10.2] - 2015-10-29 (backfilled 2016-04-25)
### Fixed
- Remove unused var in bash completion.
## [1.10.1] - 2015-10-21 (backfilled 2016-04-25)
### Added
- Coverage and reference logos in README.
### Fixed
- Use specified values in help and version parsing.
- Only display app version and help message once.
## [1.10.0] - 2015-10-06 (backfilled 2016-04-25)
### Added
- More tests for existing functionality.
- `ArgsUsage` at app and command level for help text flexibility.
### Fixed
- Honor `HideHelp` and `HideVersion` in `App.Run`.
- Remove juvenile word from README.
## [1.9.0] - 2015-09-08 (backfilled 2016-04-25)
### Added
- `FullName` on command with accompanying help output update.
- Set default `$PROG` in bash completion.
### Changed
- Docs formatting.
### Fixed
- Removed self-referential imports in tests.
## [1.8.0] - 2015-06-30 (backfilled 2016-04-25)
### Added
- Support for `Copyright` at app level.
- `Parent` func at context level to walk up context lineage.
### Fixed
- Global flag processing at top level.
## [1.7.1] - 2015-06-11 (backfilled 2016-04-25)
### Added
- Aggregate errors from `Before`/`After` funcs.
- Doc comments on flag structs.
- Include non-global flags when checking version and help.
- Travis CI config updates.
### Fixed
- Ensure slice type flags have non-nil values.
- Collect global flags from the full command hierarchy.
- Docs prose.
## [1.7.0] - 2015-05-03 (backfilled 2016-04-25)
### Changed
- `HelpPrinter` signature includes output writer.
### Fixed
- Specify go 1.1+ in docs.
- Set `Writer` when running command as app.
## [1.6.0] - 2015-03-23 (backfilled 2016-04-25)
### Added
- Multiple author support.
- `NumFlags` at context level.
- `Aliases` at command level.
### Deprecated
- `ShortName` at command level.
### Fixed
- Subcommand help output.
- Backward compatible support for deprecated `Author` and `Email` fields.
- Docs regarding `Names`/`Aliases`.
## [1.5.0] - 2015-02-20 (backfilled 2016-04-25)
### Added
- `After` hook func support at app and command level.
### Fixed
- Use parsed context when running command as subcommand.
- Docs prose.
## [1.4.1] - 2015-01-09 (backfilled 2016-04-25)
### Added
- Support for hiding `-h / --help` flags, but not `help` subcommand.
- Stop flag parsing after `--`.
### Fixed
- Help text for generic flags to specify single value.
- Use double quotes in output for defaults.
- Use `ParseInt` instead of `ParseUint` for int environment var values.
- Use `0` as base when parsing int environment var values.
## [1.4.0] - 2014-12-12 (backfilled 2016-04-25)
### Added
- Support for environment variable lookup "cascade".
- Support for `Stdout` on app for output redirection.
### Fixed
- Print command help instead of app help in `ShowCommandHelp`.
## [1.3.1] - 2014-11-13 (backfilled 2016-04-25)
### Added
- Docs and example code updates.
### Changed
- Default `-v / --version` flag made optional.
## [1.3.0] - 2014-08-10 (backfilled 2016-04-25)
### Added
- `FlagNames` at context level.
- Exposed `VersionPrinter` var for more control over version output.
- Zsh completion hook.
- `AUTHOR` section in default app help template.
- Contribution guidelines.
- `DurationFlag` type.
## [1.2.0] - 2014-08-02
### Added
- Support for environment variable defaults on flags plus tests.
## [1.1.0] - 2014-07-15
### Added
- Bash completion.
- Optional hiding of built-in help command.
- Optional skipping of flag parsing at command level.
- `Author`, `Email`, and `Compiled` metadata on app.
- `Before` hook func support at app and command level.
- `CommandNotFound` func support at app level.
- Command reference available on context.
- `GenericFlag` type.
- `Float64Flag` type.
- `BoolTFlag` type.
- `IsSet` flag helper on context.
- More flag lookup funcs at context level.
- More tests &amp; docs.
### Changed
- Help template updates to account for presence/absence of flags.
- Separated subcommand help template.
- Exposed `HelpPrinter` var for more control over help output.
## [1.0.0] - 2013-11-01
### Added
- `help` flag in default app flag set and each command flag set.
- Custom handling of argument parsing errors.
- Command lookup by name at app level.
- `StringSliceFlag` type and supporting `StringSlice` type.
- `IntSliceFlag` type and supporting `IntSlice` type.
- Slice type flag lookups by name at context level.
- Export of app and command help functions.
- More tests &amp; docs.
## 0.1.0 - 2013-07-22
### Added
- Initial implementation.
[Unreleased]: https://github.com/urfave/cli/compare/v1.22.1...HEAD
[1.22.1]: https://github.com/urfave/cli/compare/v1.22.0...v1.22.1
[1.22.0]: https://github.com/urfave/cli/compare/v1.21.0...v1.22.0
[1.21.0]: https://github.com/urfave/cli/compare/v1.20.0...v1.21.0
[1.20.0]: https://github.com/urfave/cli/compare/v1.19.1...v1.20.0
[1.19.1]: https://github.com/urfave/cli/compare/v1.19.0...v1.19.1
[1.19.0]: https://github.com/urfave/cli/compare/v1.18.0...v1.19.0
[1.18.0]: https://github.com/urfave/cli/compare/v1.17.0...v1.18.0
[1.17.0]: https://github.com/urfave/cli/compare/v1.16.0...v1.17.0
[1.16.0]: https://github.com/urfave/cli/compare/v1.15.0...v1.16.0
[1.15.0]: https://github.com/urfave/cli/compare/v1.14.0...v1.15.0
[1.14.0]: https://github.com/urfave/cli/compare/v1.13.0...v1.14.0
[1.13.0]: https://github.com/urfave/cli/compare/v1.12.0...v1.13.0
[1.12.0]: https://github.com/urfave/cli/compare/v1.11.1...v1.12.0
[1.11.1]: https://github.com/urfave/cli/compare/v1.11.0...v1.11.1
[1.11.0]: https://github.com/urfave/cli/compare/v1.10.2...v1.11.0
[1.10.2]: https://github.com/urfave/cli/compare/v1.10.1...v1.10.2
[1.10.1]: https://github.com/urfave/cli/compare/v1.10.0...v1.10.1
[1.10.0]: https://github.com/urfave/cli/compare/v1.9.0...v1.10.0
[1.9.0]: https://github.com/urfave/cli/compare/v1.8.0...v1.9.0
[1.8.0]: https://github.com/urfave/cli/compare/v1.7.1...v1.8.0
[1.7.1]: https://github.com/urfave/cli/compare/v1.7.0...v1.7.1
[1.7.0]: https://github.com/urfave/cli/compare/v1.6.0...v1.7.0
[1.6.0]: https://github.com/urfave/cli/compare/v1.5.0...v1.6.0
[1.5.0]: https://github.com/urfave/cli/compare/v1.4.1...v1.5.0
[1.4.1]: https://github.com/urfave/cli/compare/v1.4.0...v1.4.1
[1.4.0]: https://github.com/urfave/cli/compare/v1.3.1...v1.4.0
[1.3.1]: https://github.com/urfave/cli/compare/v1.3.0...v1.3.1
[1.3.0]: https://github.com/urfave/cli/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/urfave/cli/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/urfave/cli/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/urfave/cli/compare/v0.1.0...v1.0.0

View file

@ -1,18 +0,0 @@
## Contributing
Use @urfave/cli to ping the maintainers.
Feel free to put up a pull request to fix a bug or maybe add a feature. We will
give it a code review and make sure that it does not break backwards
compatibility. If collaborators agree that it is in line with
the vision of the project, we will work with you to get the code into
a mergeable state and merge it into the master branch.
If you have contributed something significant to the project, we will most
likely add you as a collaborator. As a collaborator you are given the ability
to merge others pull requests. It is very important that new code does not
break existing code, so be careful about what code you do choose to merge.
If you feel like you have contributed to the project but have not yet been added
as a collaborator, we probably forgot to add you :sweat_smile:. Please open an
issue!

1523
vendor/github.com/urfave/cli/README.md generated vendored

File diff suppressed because it is too large Load diff

View file

@ -199,12 +199,12 @@ func (a *App) Run(arguments []string) (err error) {
// always appends the completion flag at the end of the command // always appends the completion flag at the end of the command
shellComplete, arguments := checkShellCompleteFlag(a, arguments) shellComplete, arguments := checkShellCompleteFlag(a, arguments)
_, err = a.newFlagSet() set, err := a.newFlagSet()
if err != nil { if err != nil {
return err return err
} }
set, err := parseIter(a, arguments[1:]) err = parseIter(set, a, arguments[1:])
nerr := normalizeFlags(a.Flags, set) nerr := normalizeFlags(a.Flags, set)
context := NewContext(a, set, nil) context := NewContext(a, set, nil)
if nerr != nil { if nerr != nil {
@ -322,12 +322,12 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
} }
a.Commands = newCmds a.Commands = newCmds
_, err = a.newFlagSet() set, err := a.newFlagSet()
if err != nil { if err != nil {
return err return err
} }
set, err := parseIter(a, ctx.Args().Tail()) err = parseIter(set, a, ctx.Args().Tail())
nerr := normalizeFlags(a.Flags, set) nerr := normalizeFlags(a.Flags, set)
context := NewContext(a, set, ctx) context := NewContext(a, set, ctx)

View file

@ -6,18 +6,23 @@ image: Visual Studio 2017
clone_folder: c:\gopath\src\github.com\urfave\cli clone_folder: c:\gopath\src\github.com\urfave\cli
cache:
- node_modules
environment: environment:
GOPATH: C:\gopath GOPATH: C:\gopath
GOVERSION: 1.11.x GOVERSION: 1.11.x
GO111MODULE: on
GOPROXY: https://proxy.golang.org
install: install:
- set PATH=%GOPATH%\bin;C:\go\bin;%PATH% - set PATH=%GOPATH%\bin;C:\go\bin;%PATH%
- go version - go version
- go env - go env
- go get github.com/urfave/gfmrun/... - go get github.com/urfave/gfmrun/cmd/gfmrun
- go get -v -t ./... - go mod vendor
build_script: build_script:
- go run build.go vet - go run build.go vet
- go run build.go test - go run build.go test
- go run build.go gfmrun - go run build.go gfmrun docs/v1/manual.md

View file

@ -127,8 +127,13 @@ func testCleanup() error {
return nil return nil
} }
func GfmrunActionFunc(_ *cli.Context) error { func GfmrunActionFunc(c *cli.Context) error {
file, err := os.Open("README.md") filename := c.Args().Get(0)
if filename == "" {
filename = "README.md"
}
file, err := os.Open(filename)
if err != nil { if err != nil {
return err return err
} }
@ -146,11 +151,16 @@ func GfmrunActionFunc(_ *cli.Context) error {
return err return err
} }
return runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", "README.md") return runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", filename)
} }
func TocActionFunc(_ *cli.Context) error { func TocActionFunc(c *cli.Context) error {
err := runCmd("node_modules/.bin/markdown-toc", "-i", "README.md") filename := c.Args().Get(0)
if filename == "" {
filename = "README.md"
}
err := runCmd("node_modules/.bin/markdown-toc", "-i", filename)
if err != nil { if err != nil {
return err return err
} }

View file

@ -190,10 +190,15 @@ func (c *Command) parseFlags(args Args) (*flag.FlagSet, error) {
} }
if !c.SkipArgReorder { if !c.SkipArgReorder {
args = reorderArgs(args) args = reorderArgs(c.Flags, args)
} }
set, err := parseIter(c, args) set, err := c.newFlagSet()
if err != nil {
return nil, err
}
err = parseIter(set, c, args)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -214,34 +219,73 @@ func (c *Command) useShortOptionHandling() bool {
return c.UseShortOptionHandling return c.UseShortOptionHandling
} }
// reorderArgs moves all flags before arguments as this is what flag expects // reorderArgs moves all flags (via reorderedArgs) before the rest of
func reorderArgs(args []string) []string { // the arguments (remainingArgs) as this is what flag expects.
var nonflags, flags []string func reorderArgs(commandFlags []Flag, args []string) []string {
var remainingArgs, reorderedArgs []string
readFlagValue := false nextIndexMayContainValue := false
for i, arg := range args { for i, arg := range args {
// dont reorder any args after a --
// read about -- here:
// https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
if arg == "--" { if arg == "--" {
nonflags = append(nonflags, args[i:]...) remainingArgs = append(remainingArgs, args[i:]...)
break break
}
if readFlagValue && !strings.HasPrefix(arg, "-") && !strings.HasPrefix(arg, "--") { // checks if this arg is a value that should be re-ordered next to its associated flag
readFlagValue = false } else if nextIndexMayContainValue && !strings.HasPrefix(arg, "-") {
flags = append(flags, arg) nextIndexMayContainValue = false
continue reorderedArgs = append(reorderedArgs, arg)
}
readFlagValue = false
if arg != "-" && strings.HasPrefix(arg, "-") { // checks if this is an arg that should be re-ordered
flags = append(flags, arg) } else if argIsFlag(commandFlags, arg) {
// we have determined that this is a flag that we should re-order
reorderedArgs = append(reorderedArgs, arg)
// if this arg does not contain a "=", then the next index may contain the value for this flag
nextIndexMayContainValue = !strings.Contains(arg, "=")
readFlagValue = !strings.Contains(arg, "=") // simply append any remaining args
} else { } else {
nonflags = append(nonflags, arg) remainingArgs = append(remainingArgs, arg)
} }
} }
return append(flags, nonflags...) return append(reorderedArgs, remainingArgs...)
}
// argIsFlag checks if an arg is one of our command flags
func argIsFlag(commandFlags []Flag, arg string) bool {
// checks if this is just a `-`, and so definitely not a flag
if arg == "-" {
return false
}
// flags always start with a -
if !strings.HasPrefix(arg, "-") {
return false
}
// this line turns `--flag` into `flag`
if strings.HasPrefix(arg, "--") {
arg = strings.Replace(arg, "-", "", 2)
}
// this line turns `-flag` into `flag`
if strings.HasPrefix(arg, "-") {
arg = strings.Replace(arg, "-", "", 1)
}
// this line turns `flag=value` into `flag`
arg = strings.Split(arg, "=")[0]
// look through all the flags, to see if the `arg` is one of our flags
for _, flag := range commandFlags {
for _, key := range strings.Split(flag.GetName(), ",") {
key := strings.TrimSpace(key)
if key == arg {
return true
}
}
}
// return false if this arg was not one of our flags
return false
} }
// Names returns the names including short names and aliases. // Names returns the names including short names and aliases.

View file

@ -86,7 +86,7 @@ type RequiredFlag interface {
type DocGenerationFlag interface { type DocGenerationFlag interface {
Flag Flag
// TakesValue returns true of the flag takes a value, otherwise false // TakesValue returns true if the flag takes a value, otherwise false
TakesValue() bool TakesValue() bool
// GetUsage returns the usage string for the flag // GetUsage returns the usage string for the flag

55
vendor/github.com/urfave/cli/help.go generated vendored
View file

@ -47,13 +47,18 @@ type helpPrinter func(w io.Writer, templ string, data interface{})
// Prints help for the App or Command with custom template function. // Prints help for the App or Command with custom template function.
type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{}) type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{})
// HelpPrinter is a function that writes the help output. If not set a default // HelpPrinter is a function that writes the help output. If not set explicitly,
// is used. The function signature is: // this calls HelpPrinterCustom using only the default template functions.
// func(w io.Writer, templ string, data interface{}) //
// If custom logic for printing help is required, this function can be
// overridden. If the ExtraInfo field is defined on an App, this function
// should not be modified, as HelpPrinterCustom will be used directly in order
// to capture the extra information.
var HelpPrinter helpPrinter = printHelp var HelpPrinter helpPrinter = printHelp
// HelpPrinterCustom is same as HelpPrinter but // HelpPrinterCustom is a function that writes the help output. It is used as
// takes a custom function for template function map. // the default implementation of HelpPrinter, and may be called directly if
// the ExtraInfo field is set on an App.
var HelpPrinterCustom helpPrinterCustom = printHelpCustom var HelpPrinterCustom helpPrinterCustom = printHelpCustom
// VersionPrinter prints the version for the App // VersionPrinter prints the version for the App
@ -66,20 +71,24 @@ func ShowAppHelpAndExit(c *Context, exitCode int) {
} }
// ShowAppHelp is an action that displays the help. // ShowAppHelp is an action that displays the help.
func ShowAppHelp(c *Context) (err error) { func ShowAppHelp(c *Context) error {
if c.App.CustomAppHelpTemplate == "" { template := c.App.CustomAppHelpTemplate
HelpPrinter(c.App.Writer, AppHelpTemplate, c.App) if template == "" {
return template = AppHelpTemplate
} }
if c.App.ExtraInfo == nil {
HelpPrinter(c.App.Writer, template, c.App)
return nil
}
customAppData := func() map[string]interface{} { customAppData := func() map[string]interface{} {
if c.App.ExtraInfo == nil {
return nil
}
return map[string]interface{}{ return map[string]interface{}{
"ExtraInfo": c.App.ExtraInfo, "ExtraInfo": c.App.ExtraInfo,
} }
} }
HelpPrinterCustom(c.App.Writer, c.App.CustomAppHelpTemplate, c.App, customAppData()) HelpPrinterCustom(c.App.Writer, template, c.App, customAppData())
return nil return nil
} }
@ -186,11 +195,13 @@ func ShowCommandHelp(ctx *Context, command string) error {
for _, c := range ctx.App.Commands { for _, c := range ctx.App.Commands {
if c.HasName(command) { if c.HasName(command) {
if c.CustomHelpTemplate != "" { templ := c.CustomHelpTemplate
HelpPrinterCustom(ctx.App.Writer, c.CustomHelpTemplate, c, nil) if templ == "" {
} else { templ = CommandHelpTemplate
HelpPrinter(ctx.App.Writer, CommandHelpTemplate, c)
} }
HelpPrinter(ctx.App.Writer, templ, c)
return nil return nil
} }
} }
@ -238,11 +249,15 @@ func ShowCommandCompletions(ctx *Context, command string) {
} }
func printHelpCustom(out io.Writer, templ string, data interface{}, customFunc map[string]interface{}) { // printHelpCustom is the default implementation of HelpPrinterCustom.
//
// The customFuncs map will be combined with a default template.FuncMap to
// allow using arbitrary functions in template rendering.
func printHelpCustom(out io.Writer, templ string, data interface{}, customFuncs map[string]interface{}) {
funcMap := template.FuncMap{ funcMap := template.FuncMap{
"join": strings.Join, "join": strings.Join,
} }
for key, value := range customFunc { for key, value := range customFuncs {
funcMap[key] = value funcMap[key] = value
} }
@ -261,7 +276,7 @@ func printHelpCustom(out io.Writer, templ string, data interface{}, customFunc m
} }
func printHelp(out io.Writer, templ string, data interface{}) { func printHelp(out io.Writer, templ string, data interface{}) {
printHelpCustom(out, templ, data, nil) HelpPrinterCustom(out, templ, data, nil)
} }
func checkVersion(c *Context) bool { func checkVersion(c *Context) bool {

View file

@ -14,42 +14,51 @@ type iterativeParser interface {
// iteratively catch parsing errors. This way we achieve LR parsing without // iteratively catch parsing errors. This way we achieve LR parsing without
// transforming any arguments. Otherwise, there is no way we can discriminate // transforming any arguments. Otherwise, there is no way we can discriminate
// combined short options from common arguments that should be left untouched. // combined short options from common arguments that should be left untouched.
func parseIter(ip iterativeParser, args []string) (*flag.FlagSet, error) { func parseIter(set *flag.FlagSet, ip iterativeParser, args []string) error {
for { for {
set, err := ip.newFlagSet() err := set.Parse(args)
if err != nil {
return nil, err
}
err = set.Parse(args)
if !ip.useShortOptionHandling() || err == nil { if !ip.useShortOptionHandling() || err == nil {
return set, err return err
} }
errStr := err.Error() errStr := err.Error()
trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: ") trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: -")
if errStr == trimmed { if errStr == trimmed {
return nil, err return err
} }
// regenerate the initial args with the split short opts // regenerate the initial args with the split short opts
newArgs := []string{} argsWereSplit := false
for i, arg := range args { for i, arg := range args {
if arg != trimmed { // skip args that are not part of the error message
newArgs = append(newArgs, arg) if name := strings.TrimLeft(arg, "-"); name != trimmed {
continue continue
} }
shortOpts := splitShortOptions(set, trimmed) // if we can't split, the error was accurate
shortOpts := splitShortOptions(set, arg)
if len(shortOpts) == 1 { if len(shortOpts) == 1 {
return nil, err return err
} }
// add each short option and all remaining arguments // swap current argument with the split version
newArgs = append(newArgs, shortOpts...) args = append(args[:i], append(shortOpts, args[i+1:]...)...)
newArgs = append(newArgs, args[i+1:]...) argsWereSplit = true
args = newArgs break
} }
// This should be an impossible to reach code path, but in case the arg
// splitting failed to happen, this will prevent infinite loops
if !argsWereSplit {
return err
}
// Since custom parsing failed, replace the flag set before retrying
newSet, err := ip.newFlagSet()
if err != nil {
return err
}
*set = *newSet
} }
} }

View file

@ -770,9 +770,9 @@ AuthorizeOrderLoop:
} }
// Remove all hanging authorizations to reduce rate limit quotas // Remove all hanging authorizations to reduce rate limit quotas
// after we're done. // after we're done.
defer func() { defer func(urls []string) {
go m.deactivatePendingAuthz(o.AuthzURLs) go m.deactivatePendingAuthz(urls)
}() }(o.AuthzURLs)
// Check if there's actually anything we need to do. // Check if there's actually anything we need to do.
switch o.Status { switch o.Status {

View file

@ -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.13 // +build go1.13,!go1.14
package idna package idna

4733
vendor/golang.org/x/net/idna/tables12.00.go generated vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -23,6 +23,7 @@ const (
HCI_CHANNEL_USER = 1 HCI_CHANNEL_USER = 1
HCI_CHANNEL_MONITOR = 2 HCI_CHANNEL_MONITOR = 2
HCI_CHANNEL_CONTROL = 3 HCI_CHANNEL_CONTROL = 3
HCI_CHANNEL_LOGGING = 4
) )
// Socketoption Level // Socketoption Level

29
vendor/golang.org/x/sys/unix/fdset.go generated vendored Normal file
View file

@ -0,0 +1,29 @@
// Copyright 2019 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 aix darwin dragonfly freebsd linux netbsd openbsd solaris
package unix
// Set adds fd to the set fds.
func (fds *FdSet) Set(fd int) {
fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))
}
// Clear removes fd from the set fds.
func (fds *FdSet) Clear(fd int) {
fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))
}
// IsSet returns whether fd is in the set fds.
func (fds *FdSet) IsSet(fd int) bool {
return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0
}
// Zero clears the set fds.
func (fds *FdSet) Zero() {
for i := range fds.Bits {
fds.Bits[i] = 0
}
}

View file

@ -44,6 +44,7 @@ includes_AIX='
#include <sys/stropts.h> #include <sys/stropts.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/poll.h> #include <sys/poll.h>
#include <sys/select.h>
#include <sys/termio.h> #include <sys/termio.h>
#include <termios.h> #include <termios.h>
#include <fcntl.h> #include <fcntl.h>
@ -190,11 +191,13 @@ struct ltchars {
#include <linux/can.h> #include <linux/can.h>
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/cryptouser.h> #include <linux/cryptouser.h>
#include <linux/devlink.h>
#include <linux/errqueue.h> #include <linux/errqueue.h>
#include <linux/falloc.h> #include <linux/falloc.h>
#include <linux/fanotify.h> #include <linux/fanotify.h>
#include <linux/filter.h> #include <linux/filter.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/fscrypt.h>
#include <linux/genetlink.h> #include <linux/genetlink.h>
#include <linux/hdreg.h> #include <linux/hdreg.h>
#include <linux/icmpv6.h> #include <linux/icmpv6.h>
@ -494,7 +497,9 @@ ccflags="$@"
$2 ~ /^CAN_/ || $2 ~ /^CAN_/ ||
$2 ~ /^CAP_/ || $2 ~ /^CAP_/ ||
$2 ~ /^ALG_/ || $2 ~ /^ALG_/ ||
$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ || $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||
$2 ~ /^FS_IOC_.*ENCRYPTION/ ||
$2 ~ /^FSCRYPT_/ ||
$2 ~ /^GRND_/ || $2 ~ /^GRND_/ ||
$2 ~ /^RND/ || $2 ~ /^RND/ ||
$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
@ -524,6 +529,7 @@ ccflags="$@"
$2 ~ /^(HDIO|WIN|SMART)_/ || $2 ~ /^(HDIO|WIN|SMART)_/ ||
$2 ~ /^CRYPTO_/ || $2 ~ /^CRYPTO_/ ||
$2 ~ /^TIPC_/ || $2 ~ /^TIPC_/ ||
$2 ~ /^DEVLINK_/ ||
$2 !~ "WMESGLEN" && $2 !~ "WMESGLEN" &&
$2 ~ /^W[A-Z0-9]+$/ || $2 ~ /^W[A-Z0-9]+$/ ||
$2 ~/^PPPIOC/ || $2 ~/^PPPIOC/ ||

View file

@ -27,8 +27,6 @@ func libc_fdopendir_trampoline()
func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
// Simulate Getdirentries using fdopendir/readdir_r/closedir. // Simulate Getdirentries using fdopendir/readdir_r/closedir.
const ptrSize = unsafe.Sizeof(uintptr(0))
// We store the number of entries to skip in the seek // We store the number of entries to skip in the seek
// offset of fd. See issue #31368. // offset of fd. See issue #31368.
// It's not the full required semantics, but should handle the case // It's not the full required semantics, but should handle the case

View file

@ -462,8 +462,12 @@ func convertFromDirents11(buf []byte, old []byte) int {
dstPos := 0 dstPos := 0
srcPos := 0 srcPos := 0
for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {
dstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos])) var dstDirent Dirent
srcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos])) var srcDirent dirent_freebsd11
// If multiple direntries are written, sometimes when we reach the final one,
// we may have cap of old less than size of dirent_freebsd11.
copy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:])
reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)
if dstPos+reclen > len(buf) { if dstPos+reclen > len(buf) {
@ -479,6 +483,7 @@ func convertFromDirents11(buf []byte, old []byte) int {
dstDirent.Pad1 = 0 dstDirent.Pad1 = 0
copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])
copy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:])
padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]
for i := range padding { for i := range padding {
padding[i] = 0 padding[i] = 0

View file

@ -459,6 +459,15 @@ const (
MAP_SHARED = 0x1 MAP_SHARED = 0x1
MAP_TYPE = 0xf0 MAP_TYPE = 0xf0
MAP_VARIABLE = 0x0 MAP_VARIABLE = 0x0
MCAST_BLOCK_SOURCE = 0x40
MCAST_EXCLUDE = 0x2
MCAST_INCLUDE = 0x1
MCAST_JOIN_GROUP = 0x3e
MCAST_JOIN_SOURCE_GROUP = 0x42
MCAST_LEAVE_GROUP = 0x3f
MCAST_LEAVE_SOURCE_GROUP = 0x43
MCAST_SOURCE_FILTER = 0x49
MCAST_UNBLOCK_SOURCE = 0x41
MCL_CURRENT = 0x100 MCL_CURRENT = 0x100
MCL_FUTURE = 0x200 MCL_FUTURE = 0x200
MSG_ANY = 0x4 MSG_ANY = 0x4
@ -483,6 +492,7 @@ const (
MS_INVALIDATE = 0x40 MS_INVALIDATE = 0x40
MS_PER_SEC = 0x3e8 MS_PER_SEC = 0x3e8
MS_SYNC = 0x20 MS_SYNC = 0x20
NFDBITS = 0x20
NL0 = 0x0 NL0 = 0x0
NL1 = 0x4000 NL1 = 0x4000
NL2 = 0x8000 NL2 = 0x8000
@ -688,7 +698,7 @@ const (
SIOCGHIWAT = 0x40047301 SIOCGHIWAT = 0x40047301
SIOCGIFADDR = -0x3fd796df SIOCGIFADDR = -0x3fd796df
SIOCGIFADDRS = 0x2000698c SIOCGIFADDRS = 0x2000698c
SIOCGIFBAUDRATE = -0x3fd79693 SIOCGIFBAUDRATE = -0x3fdf9669
SIOCGIFBRDADDR = -0x3fd796dd SIOCGIFBRDADDR = -0x3fd796dd
SIOCGIFCONF = -0x3ff796bb SIOCGIFCONF = -0x3ff796bb
SIOCGIFCONFGLOB = -0x3ff79670 SIOCGIFCONFGLOB = -0x3ff79670

View file

@ -459,6 +459,15 @@ const (
MAP_SHARED = 0x1 MAP_SHARED = 0x1
MAP_TYPE = 0xf0 MAP_TYPE = 0xf0
MAP_VARIABLE = 0x0 MAP_VARIABLE = 0x0
MCAST_BLOCK_SOURCE = 0x40
MCAST_EXCLUDE = 0x2
MCAST_INCLUDE = 0x1
MCAST_JOIN_GROUP = 0x3e
MCAST_JOIN_SOURCE_GROUP = 0x42
MCAST_LEAVE_GROUP = 0x3f
MCAST_LEAVE_SOURCE_GROUP = 0x43
MCAST_SOURCE_FILTER = 0x49
MCAST_UNBLOCK_SOURCE = 0x41
MCL_CURRENT = 0x100 MCL_CURRENT = 0x100
MCL_FUTURE = 0x200 MCL_FUTURE = 0x200
MSG_ANY = 0x4 MSG_ANY = 0x4
@ -483,6 +492,7 @@ const (
MS_INVALIDATE = 0x40 MS_INVALIDATE = 0x40
MS_PER_SEC = 0x3e8 MS_PER_SEC = 0x3e8
MS_SYNC = 0x20 MS_SYNC = 0x20
NFDBITS = 0x40
NL0 = 0x0 NL0 = 0x0
NL1 = 0x4000 NL1 = 0x4000
NL2 = 0x8000 NL2 = 0x8000
@ -688,7 +698,7 @@ const (
SIOCGHIWAT = 0x40047301 SIOCGHIWAT = 0x40047301
SIOCGIFADDR = -0x3fd796df SIOCGIFADDR = -0x3fd796df
SIOCGIFADDRS = 0x2000698c SIOCGIFADDRS = 0x2000698c
SIOCGIFBAUDRATE = -0x3fd79693 SIOCGIFBAUDRATE = -0x3fdf9669
SIOCGIFBRDADDR = -0x3fd796dd SIOCGIFBRDADDR = -0x3fd796dd
SIOCGIFCONF = -0x3fef96bb SIOCGIFCONF = -0x3fef96bb
SIOCGIFCONFGLOB = -0x3fef9670 SIOCGIFCONFGLOB = -0x3fef9670

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendmsg(SB) JMP libc_sendmsg(SB)
TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
JMP libc_kevent(SB) JMP libc_kevent(SB)
TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc___sysctl(SB)
TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
JMP libc_utimes(SB) JMP libc_utimes(SB)
TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
@ -90,6 +88,8 @@ TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
JMP libc_kill(SB) JMP libc_kill(SB)
TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_ioctl(SB) JMP libc_ioctl(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendfile(SB) JMP libc_sendfile(SB)
TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0

View file

@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendmsg(SB) JMP libc_sendmsg(SB)
TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
JMP libc_kevent(SB) JMP libc_kevent(SB)
TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc___sysctl(SB)
TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
JMP libc_utimes(SB) JMP libc_utimes(SB)
TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
@ -90,6 +88,8 @@ TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
JMP libc_kill(SB) JMP libc_kill(SB)
TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_ioctl(SB) JMP libc_ioctl(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendfile(SB) JMP libc_sendfile(SB)
TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0

View file

@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendmsg(SB) JMP libc_sendmsg(SB)
TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
JMP libc_kevent(SB) JMP libc_kevent(SB)
TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc___sysctl(SB)
TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
JMP libc_utimes(SB) JMP libc_utimes(SB)
TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
@ -90,6 +88,8 @@ TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
JMP libc_kill(SB) JMP libc_kill(SB)
TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_ioctl(SB) JMP libc_ioctl(SB)
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
JMP libc_sysctl(SB)
TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
JMP libc_sendfile(SB) JMP libc_sendfile(SB)
TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0

View file

@ -415,4 +415,5 @@ const (
SYS_FSMOUNT = 4432 SYS_FSMOUNT = 4432
SYS_FSPICK = 4433 SYS_FSPICK = 4433
SYS_PIDFD_OPEN = 4434 SYS_PIDFD_OPEN = 4434
SYS_CLONE3 = 4435
) )

View file

@ -345,4 +345,5 @@ const (
SYS_FSMOUNT = 5432 SYS_FSMOUNT = 5432
SYS_FSPICK = 5433 SYS_FSPICK = 5433
SYS_PIDFD_OPEN = 5434 SYS_PIDFD_OPEN = 5434
SYS_CLONE3 = 5435
) )

View file

@ -345,4 +345,5 @@ const (
SYS_FSMOUNT = 5432 SYS_FSMOUNT = 5432
SYS_FSPICK = 5433 SYS_FSPICK = 5433
SYS_PIDFD_OPEN = 5434 SYS_PIDFD_OPEN = 5434
SYS_CLONE3 = 5435
) )

View file

@ -415,4 +415,5 @@ const (
SYS_FSMOUNT = 4432 SYS_FSMOUNT = 4432
SYS_FSPICK = 4433 SYS_FSPICK = 4433
SYS_PIDFD_OPEN = 4434 SYS_PIDFD_OPEN = 4434
SYS_CLONE3 = 4435
) )

View file

@ -397,7 +397,7 @@ type Reg struct {
} }
type FpReg struct { type FpReg struct {
Fp_q [32]uint128 Fp_q [512]uint8
Fp_sr uint32 Fp_sr uint32
Fp_cr uint32 Fp_cr uint32
} }

View file

@ -179,6 +179,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -256,7 +305,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -427,7 +476,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2041,6 +2090,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2055,6 +2105,7 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2626,3 +2677,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -179,6 +179,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -256,7 +305,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -428,7 +477,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2054,6 +2103,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2068,6 +2118,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2640,3 +2692,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -183,6 +183,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -260,7 +309,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -431,7 +480,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2032,6 +2081,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2046,6 +2096,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2617,3 +2669,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -180,6 +180,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -257,7 +306,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -429,7 +478,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2033,6 +2082,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2047,6 +2097,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2619,3 +2671,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -182,6 +182,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -259,7 +308,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -430,7 +479,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2038,6 +2087,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2052,6 +2102,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2623,3 +2675,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -180,6 +180,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -257,7 +306,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -429,7 +478,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -783,6 +832,7 @@ type Ustat_t struct {
type EpollEvent struct { type EpollEvent struct {
Events uint32 Events uint32
_ int32
Fd int32 Fd int32
Pad int32 Pad int32
} }
@ -2035,6 +2085,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2049,6 +2100,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2621,3 +2674,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -180,6 +180,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -257,7 +306,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -429,7 +478,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -783,6 +832,7 @@ type Ustat_t struct {
type EpollEvent struct { type EpollEvent struct {
Events uint32 Events uint32
_ int32
Fd int32 Fd int32
Pad int32 Pad int32
} }
@ -2035,6 +2085,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2049,6 +2100,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2621,3 +2674,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -182,6 +182,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -259,7 +308,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -430,7 +479,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2038,6 +2087,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2052,6 +2102,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2623,3 +2675,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -181,6 +181,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -258,7 +307,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -430,7 +479,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2043,6 +2092,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2057,6 +2107,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2629,3 +2681,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -181,6 +181,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -258,7 +307,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -430,7 +479,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2043,6 +2092,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2057,6 +2107,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2629,3 +2681,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -180,6 +180,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -257,7 +306,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -429,7 +478,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2061,6 +2110,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2075,6 +2125,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2647,3 +2699,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -179,6 +179,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -256,7 +305,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -428,7 +477,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2057,6 +2106,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2071,6 +2121,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2643,3 +2695,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -183,6 +183,55 @@ type FscryptKey struct {
Size uint32 Size uint32
} }
type FscryptPolicyV1 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
Master_key_descriptor [8]uint8
}
type FscryptPolicyV2 struct {
Version uint8
Contents_encryption_mode uint8
Filenames_encryption_mode uint8
Flags uint8
_ [4]uint8
Master_key_identifier [16]uint8
}
type FscryptGetPolicyExArg struct {
Size uint64
Policy [24]byte
}
type FscryptKeySpecifier struct {
Type uint32
_ uint32
U [32]byte
}
type FscryptAddKeyArg struct {
Key_spec FscryptKeySpecifier
Raw_size uint32
_ [9]uint32
}
type FscryptRemoveKeyArg struct {
Key_spec FscryptKeySpecifier
Removal_status_flags uint32
_ [5]uint32
}
type FscryptGetKeyStatusArg struct {
Key_spec FscryptKeySpecifier
_ [6]uint32
Status uint32
Status_flags uint32
User_count uint32
_ [13]uint32
}
type KeyctlDHParams struct { type KeyctlDHParams struct {
Private int32 Private int32
Prime int32 Prime int32
@ -260,7 +309,7 @@ type RawSockaddrRFCOMM struct {
type RawSockaddrCAN struct { type RawSockaddrCAN struct {
Family uint16 Family uint16
Ifindex int32 Ifindex int32
Addr [8]byte Addr [16]byte
} }
type RawSockaddrALG struct { type RawSockaddrALG struct {
@ -432,7 +481,7 @@ const (
SizeofSockaddrHCI = 0x6 SizeofSockaddrHCI = 0x6
SizeofSockaddrL2 = 0xe SizeofSockaddrL2 = 0xe
SizeofSockaddrRFCOMM = 0xa SizeofSockaddrRFCOMM = 0xa
SizeofSockaddrCAN = 0x10 SizeofSockaddrCAN = 0x18
SizeofSockaddrALG = 0x58 SizeofSockaddrALG = 0x58
SizeofSockaddrVM = 0x10 SizeofSockaddrVM = 0x10
SizeofSockaddrXDP = 0x10 SizeofSockaddrXDP = 0x10
@ -2038,6 +2087,7 @@ type XDPRingOffset struct {
Producer uint64 Producer uint64
Consumer uint64 Consumer uint64
Desc uint64 Desc uint64
Flags uint64
} }
type XDPMmapOffsets struct { type XDPMmapOffsets struct {
@ -2052,6 +2102,8 @@ type XDPUmemReg struct {
Len uint64 Len uint64
Size uint32 Size uint32
Headroom uint32 Headroom uint32
Flags uint32
_ [4]byte
} }
type XDPStatistics struct { type XDPStatistics struct {
@ -2624,3 +2676,132 @@ const (
SYSLOG_ACTION_SIZE_UNREAD = 9 SYSLOG_ACTION_SIZE_UNREAD = 9
SYSLOG_ACTION_SIZE_BUFFER = 10 SYSLOG_ACTION_SIZE_BUFFER = 10
) )
const (
DEVLINK_CMD_UNSPEC = 0x0
DEVLINK_CMD_GET = 0x1
DEVLINK_CMD_SET = 0x2
DEVLINK_CMD_NEW = 0x3
DEVLINK_CMD_DEL = 0x4
DEVLINK_CMD_PORT_GET = 0x5
DEVLINK_CMD_PORT_SET = 0x6
DEVLINK_CMD_PORT_NEW = 0x7
DEVLINK_CMD_PORT_DEL = 0x8
DEVLINK_CMD_PORT_SPLIT = 0x9
DEVLINK_CMD_PORT_UNSPLIT = 0xa
DEVLINK_CMD_SB_GET = 0xb
DEVLINK_CMD_SB_SET = 0xc
DEVLINK_CMD_SB_NEW = 0xd
DEVLINK_CMD_SB_DEL = 0xe
DEVLINK_CMD_SB_POOL_GET = 0xf
DEVLINK_CMD_SB_POOL_SET = 0x10
DEVLINK_CMD_SB_POOL_NEW = 0x11
DEVLINK_CMD_SB_POOL_DEL = 0x12
DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
DEVLINK_CMD_ESWITCH_GET = 0x1d
DEVLINK_CMD_ESWITCH_SET = 0x1e
DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
DEVLINK_CMD_MAX = 0x44
DEVLINK_PORT_TYPE_NOTSET = 0x0
DEVLINK_PORT_TYPE_AUTO = 0x1
DEVLINK_PORT_TYPE_ETH = 0x2
DEVLINK_PORT_TYPE_IB = 0x3
DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
DEVLINK_ESWITCH_MODE_LEGACY = 0x0
DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
DEVLINK_ATTR_UNSPEC = 0x0
DEVLINK_ATTR_BUS_NAME = 0x1
DEVLINK_ATTR_DEV_NAME = 0x2
DEVLINK_ATTR_PORT_INDEX = 0x3
DEVLINK_ATTR_PORT_TYPE = 0x4
DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
DEVLINK_ATTR_SB_INDEX = 0xb
DEVLINK_ATTR_SB_SIZE = 0xc
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
DEVLINK_ATTR_SB_POOL_INDEX = 0x11
DEVLINK_ATTR_SB_POOL_TYPE = 0x12
DEVLINK_ATTR_SB_POOL_SIZE = 0x13
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
DEVLINK_ATTR_SB_THRESHOLD = 0x15
DEVLINK_ATTR_SB_TC_INDEX = 0x16
DEVLINK_ATTR_SB_OCC_CUR = 0x17
DEVLINK_ATTR_SB_OCC_MAX = 0x18
DEVLINK_ATTR_ESWITCH_MODE = 0x19
DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
DEVLINK_ATTR_DPIPE_TABLES = 0x1b
DEVLINK_ATTR_DPIPE_TABLE = 0x1c
DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
DEVLINK_ATTR_DPIPE_ENTRY = 0x23
DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
DEVLINK_ATTR_DPIPE_MATCH = 0x28
DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
DEVLINK_ATTR_DPIPE_ACTION = 0x2b
DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
DEVLINK_ATTR_DPIPE_VALUE = 0x2e
DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
DEVLINK_ATTR_DPIPE_HEADERS = 0x31
DEVLINK_ATTR_DPIPE_HEADER = 0x32
DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
DEVLINK_ATTR_DPIPE_FIELD = 0x38
DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
DEVLINK_ATTR_PAD = 0x3d
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
DEVLINK_ATTR_MAX = 0x89
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
DEVLINK_DPIPE_HEADER_IPV4 = 0x1
DEVLINK_DPIPE_HEADER_IPV6 = 0x2
)

View file

@ -81,13 +81,13 @@ func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, u
args := []string{"list", "-f", "{{context.GOARCH}} {{context.Compiler}}"} args := []string{"list", "-f", "{{context.GOARCH}} {{context.Compiler}}"}
args = append(args, buildFlags...) args = append(args, buildFlags...)
args = append(args, "--", "unsafe") args = append(args, "--", "unsafe")
stdout, err := InvokeGo(ctx, env, dir, usesExportData, args...) stdout, stderr, err := invokeGo(ctx, env, dir, usesExportData, args...)
var goarch, compiler string var goarch, compiler string
if err != nil { if err != nil {
if strings.Contains(err.Error(), "cannot find main module") { if strings.Contains(err.Error(), "cannot find main module") {
// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc. // User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
// TODO(matloob): Is this a problem in practice? // TODO(matloob): Is this a problem in practice?
envout, enverr := InvokeGo(ctx, env, dir, usesExportData, "env", "GOARCH") envout, _, enverr := invokeGo(ctx, env, dir, usesExportData, "env", "GOARCH")
if enverr != nil { if enverr != nil {
return nil, err return nil, err
} }
@ -99,7 +99,8 @@ func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, u
} else { } else {
fields := strings.Fields(stdout.String()) fields := strings.Fields(stdout.String())
if len(fields) < 2 { if len(fields) < 2 {
return nil, fmt.Errorf("could not determine GOARCH and Go compiler") return nil, fmt.Errorf("could not parse GOARCH and Go compiler in format \"<GOARCH> <compiler>\" from stdout of go command:\n%s\ndir: %s\nstdout: <<%s>>\nstderr: <<%s>>",
cmdDebugStr(env, args...), dir, stdout.String(), stderr.String())
} }
goarch = fields[0] goarch = fields[0]
compiler = fields[1] compiler = fields[1]
@ -107,8 +108,8 @@ func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, u
return types.SizesFor(compiler, goarch), nil return types.SizesFor(compiler, goarch), nil
} }
// InvokeGo returns the stdout of a go command invocation. // invokeGo returns the stdout and stderr of a go command invocation.
func InvokeGo(ctx context.Context, env []string, dir string, usesExportData bool, args ...string) (*bytes.Buffer, error) { func invokeGo(ctx context.Context, env []string, dir string, usesExportData bool, args ...string) (*bytes.Buffer, *bytes.Buffer, error) {
if debug { if debug {
defer func(start time.Time) { log.Printf("%s for %v", time.Since(start), cmdDebugStr(env, args...)) }(time.Now()) defer func(start time.Time) { log.Printf("%s for %v", time.Since(start), cmdDebugStr(env, args...)) }(time.Now())
} }
@ -131,7 +132,7 @@ func InvokeGo(ctx context.Context, env []string, dir string, usesExportData bool
// Catastrophic error: // Catastrophic error:
// - executable not found // - executable not found
// - context cancellation // - context cancellation
return nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err) return nil, nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err)
} }
// Export mode entails a build. // Export mode entails a build.
@ -139,7 +140,7 @@ func InvokeGo(ctx context.Context, env []string, dir string, usesExportData bool
// (despite the -e flag) and the Export field is blank. // (despite the -e flag) and the Export field is blank.
// Do not fail in that case. // Do not fail in that case.
if !usesExportData { if !usesExportData {
return nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr) return nil, nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr)
} }
} }
@ -158,7 +159,7 @@ func InvokeGo(ctx context.Context, env []string, dir string, usesExportData bool
fmt.Fprintf(os.Stderr, "%s stdout: <<%s>>\n", cmdDebugStr(env, args...), stdout) fmt.Fprintf(os.Stderr, "%s stdout: <<%s>>\n", cmdDebugStr(env, args...), stdout)
} }
return stdout, nil return stdout, stderr, nil
} }
func cmdDebugStr(envlist []string, args ...string) string { func cmdDebugStr(envlist []string, args ...string) string {

View file

@ -12,6 +12,7 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"os"
"os/exec" "os/exec"
"strings" "strings"
) )
@ -76,12 +77,17 @@ func findExternalDriver(cfg *Config) driver {
} }
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
stderr := new(bytes.Buffer)
cmd := exec.CommandContext(cfg.Context, tool, words...) cmd := exec.CommandContext(cfg.Context, tool, words...)
cmd.Dir = cfg.Dir cmd.Dir = cfg.Dir
cmd.Env = cfg.Env cmd.Env = cfg.Env
cmd.Stdin = bytes.NewReader(req) cmd.Stdin = bytes.NewReader(req)
cmd.Stdout = buf cmd.Stdout = buf
cmd.Stderr = new(bytes.Buffer) cmd.Stderr = stderr
if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTDRIVERERRORS") != "" {
fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd, words...), stderr)
}
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr) return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr)
} }

View file

@ -110,6 +110,7 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
sizeswg.Done() sizeswg.Done()
}() }()
} }
defer sizeswg.Wait()
// start fetching rootDirs // start fetching rootDirs
var info goInfo var info goInfo
@ -128,6 +129,10 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
return &info return &info
} }
// Ensure that we don't leak goroutines: Load is synchronous, so callers will
// not expect it to access the fields of cfg after the call returns.
defer getGoInfo()
// always pass getGoInfo to golistDriver // always pass getGoInfo to golistDriver
golistDriver := func(cfg *Config, patterns ...string) (*driverResponse, error) { golistDriver := func(cfg *Config, patterns ...string) (*driverResponse, error) {
return golistDriver(cfg, getGoInfo, patterns...) return golistDriver(cfg, getGoInfo, patterns...)
@ -265,10 +270,7 @@ func addNeededOverlayPackages(cfg *Config, driver driver, response *responseDedu
if err != nil { if err != nil {
return err return err
} }
if err := addNeededOverlayPackages(cfg, driver, response, needPkgs, getGoInfo); err != nil { return addNeededOverlayPackages(cfg, driver, response, needPkgs, getGoInfo)
return err
}
return nil
} }
func runContainsQueries(cfg *Config, driver driver, response *responseDeduper, queries []string, goInfo func() *goInfo) error { func runContainsQueries(cfg *Config, driver driver, response *responseDeduper, queries []string, goInfo func() *goInfo) error {
@ -368,7 +370,8 @@ func adHocPackage(cfg *Config, driver driver, pattern, query string) (*driverRes
// Special case to handle issue #33482: // Special case to handle issue #33482:
// If this is a file= query for ad-hoc packages where the file only exists on an overlay, // If this is a file= query for ad-hoc packages where the file only exists on an overlay,
// and exists outside of a module, add the file in for the package. // and exists outside of a module, add the file in for the package.
if len(dirResponse.Packages) == 1 && (dirResponse.Packages[0].ID == "command-line-arguments" || dirResponse.Packages[0].PkgPath == filepath.ToSlash(query)) { if len(dirResponse.Packages) == 1 && (dirResponse.Packages[0].ID == "command-line-arguments" ||
filepath.ToSlash(dirResponse.Packages[0].PkgPath) == filepath.ToSlash(query)) {
if len(dirResponse.Packages[0].GoFiles) == 0 { if len(dirResponse.Packages[0].GoFiles) == 0 {
filename := filepath.Join(pattern, filepath.Base(query)) // avoid recomputing abspath filename := filepath.Join(pattern, filepath.Base(query)) // avoid recomputing abspath
// TODO(matloob): check if the file is outside of a root dir? // TODO(matloob): check if the file is outside of a root dir?
@ -734,9 +737,9 @@ func golistDriver(cfg *Config, rootsDirs func() *goInfo, words ...string) (*driv
// go list uses the following identifiers in ImportPath and Imports: // go list uses the following identifiers in ImportPath and Imports:
// //
// "p" -- importable package or main (command) // "p" -- importable package or main (command)
// "q.test" -- q's test executable // "q.test" -- q's test executable
// "p [q.test]" -- variant of p as built for q's test executable // "p [q.test]" -- variant of p as built for q's test executable
// "q_test [q.test]" -- q's external test package // "q_test [q.test]" -- q's external test package
// //
// The packages p that are built differently for a test q.test // The packages p that are built differently for a test q.test
// are q itself, plus any helpers used by the external test q_test, // are q itself, plus any helpers used by the external test q_test,
@ -1061,7 +1064,14 @@ func invokeGo(cfg *Config, args ...string) (*bytes.Buffer, error) {
// TODO(matloob): command-line-arguments isn't correct here. // TODO(matloob): command-line-arguments isn't correct here.
"command-line-arguments", strings.Trim(stderr.String(), "\n")) "command-line-arguments", strings.Trim(stderr.String(), "\n"))
return bytes.NewBufferString(output), nil return bytes.NewBufferString(output), nil
}
// Another variation of the previous error
if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "outside module root") {
output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`,
// TODO(matloob): command-line-arguments isn't correct here.
"command-line-arguments", strings.Trim(stderr.String(), "\n"))
return bytes.NewBufferString(output), nil
} }
// Workaround for an instance of golang.org/issue/26755: go list -e will return a non-zero exit // Workaround for an instance of golang.org/issue/26755: go list -e will return a non-zero exit

View file

@ -0,0 +1,57 @@
// Copyright 2019 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 packages
import (
"fmt"
"strings"
)
var allModes = []LoadMode{
NeedName,
NeedFiles,
NeedCompiledGoFiles,
NeedImports,
NeedDeps,
NeedExportsFile,
NeedTypes,
NeedSyntax,
NeedTypesInfo,
NeedTypesSizes,
}
var modeStrings = []string{
"NeedName",
"NeedFiles",
"NeedCompiledGoFiles",
"NeedImports",
"NeedDeps",
"NeedExportsFile",
"NeedTypes",
"NeedSyntax",
"NeedTypesInfo",
"NeedTypesSizes",
}
func (mod LoadMode) String() string {
m := mod
if m == 0 {
return fmt.Sprintf("LoadMode(0)")
}
var out []string
for i, x := range allModes {
if x > m {
break
}
if (m & x) != 0 {
out = append(out, modeStrings[i])
m = m ^ x
}
}
if m != 0 {
out = append(out, "Unknown")
}
return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|"))
}

View file

@ -467,7 +467,7 @@ func newLoader(cfg *Config) *loader {
ld.requestedMode = ld.Mode ld.requestedMode = ld.Mode
ld.Mode = impliedLoadMode(ld.Mode) ld.Mode = impliedLoadMode(ld.Mode)
if ld.Mode&NeedTypes != 0 { if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 {
if ld.Fset == nil { if ld.Fset == nil {
ld.Fset = token.NewFileSet() ld.Fset = token.NewFileSet()
} }
@ -609,9 +609,9 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) {
} }
} }
} }
// Load type data if needed, starting at // Load type data and syntax if needed, starting at
// the initial packages (roots of the import DAG). // the initial packages (roots of the import DAG).
if ld.Mode&NeedTypes != 0 { if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 {
var wg sync.WaitGroup var wg sync.WaitGroup
for _, lpkg := range initial { for _, lpkg := range initial {
wg.Add(1) wg.Add(1)
@ -770,7 +770,7 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) {
lpkg.Errors = append(lpkg.Errors, errs...) lpkg.Errors = append(lpkg.Errors, errs...)
} }
if len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" { if ld.Config.Mode&NeedTypes != 0 && len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" {
// The config requested loading sources and types, but sources are missing. // The config requested loading sources and types, but sources are missing.
// Add an error to the package and fall back to loading from export data. // Add an error to the package and fall back to loading from export data.
appendError(Error{"-", fmt.Sprintf("sources missing for package %s", lpkg.ID), ParseError}) appendError(Error{"-", fmt.Sprintf("sources missing for package %s", lpkg.ID), ParseError})
@ -784,6 +784,9 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) {
} }
lpkg.Syntax = files lpkg.Syntax = files
if ld.Config.Mode&NeedTypes == 0 {
return
}
lpkg.TypesInfo = &types.Info{ lpkg.TypesInfo = &types.Info{
Types: make(map[ast.Expr]types.TypeAndValue), Types: make(map[ast.Expr]types.TypeAndValue),

View file

@ -13,9 +13,10 @@ import (
// It also carries the FileSet that produced the positions, so that it is // It also carries the FileSet that produced the positions, so that it is
// self contained. // self contained.
type Range struct { type Range struct {
FileSet *token.FileSet FileSet *token.FileSet
Start token.Pos Start token.Pos
End token.Pos End token.Pos
Converter Converter
} }
// TokenConverter is a Converter backed by a token file set and file. // TokenConverter is a Converter backed by a token file set and file.
@ -64,23 +65,56 @@ func (r Range) Span() (Span, error) {
if f == nil { if f == nil {
return Span{}, fmt.Errorf("file not found in FileSet") return Span{}, fmt.Errorf("file not found in FileSet")
} }
s := Span{v: span{URI: FileURI(f.Name())}} var s Span
var err error var err error
s.v.Start.Offset, err = offset(f, r.Start) var startFilename string
startFilename, s.v.Start.Line, s.v.Start.Column, err = position(f, r.Start)
if err != nil { if err != nil {
return Span{}, err return Span{}, err
} }
s.v.URI = FileURI(startFilename)
if r.End.IsValid() { if r.End.IsValid() {
s.v.End.Offset, err = offset(f, r.End) var endFilename string
endFilename, s.v.End.Line, s.v.End.Column, err = position(f, r.End)
if err != nil { if err != nil {
return Span{}, err return Span{}, err
} }
// In the presence of line directives, a single File can have sections from
// multiple file names.
if endFilename != startFilename {
return Span{}, fmt.Errorf("span begins in file %q but ends in %q", startFilename, endFilename)
}
} }
s.v.Start.clean() s.v.Start.clean()
s.v.End.clean() s.v.End.clean()
s.v.clean() s.v.clean()
converter := NewTokenConverter(r.FileSet, f) if r.Converter != nil {
return s.WithPosition(converter) return s.WithOffset(r.Converter)
}
if startFilename != f.Name() {
return Span{}, fmt.Errorf("must supply Converter for file %q containing lines from %q", f.Name(), startFilename)
}
return s.WithOffset(NewTokenConverter(r.FileSet, f))
}
func position(f *token.File, pos token.Pos) (string, int, int, error) {
off, err := offset(f, pos)
if err != nil {
return "", 0, 0, err
}
return positionFromOffset(f, off)
}
func positionFromOffset(f *token.File, offset int) (string, int, int, error) {
if offset > f.Size() {
return "", 0, 0, fmt.Errorf("offset %v is past the end of the file %v", offset, f.Size())
}
pos := f.Pos(offset)
p := f.Position(pos)
if offset == f.Size() {
return p.Filename, p.Line + 1, 1, nil
}
return p.Filename, p.Line, p.Column, nil
} }
// offset is a copy of the Offset function in go/token, but with the adjustment // offset is a copy of the Offset function in go/token, but with the adjustment
@ -108,22 +142,16 @@ func (s Span) Range(converter *TokenConverter) (Range, error) {
return Range{}, fmt.Errorf("end offset %v is past the end of the file %v", s.End(), converter.file.Size()) return Range{}, fmt.Errorf("end offset %v is past the end of the file %v", s.End(), converter.file.Size())
} }
return Range{ return Range{
FileSet: converter.fset, FileSet: converter.fset,
Start: converter.file.Pos(s.Start().Offset()), Start: converter.file.Pos(s.Start().Offset()),
End: converter.file.Pos(s.End().Offset()), End: converter.file.Pos(s.End().Offset()),
Converter: converter,
}, nil }, nil
} }
func (l *TokenConverter) ToPosition(offset int) (int, int, error) { func (l *TokenConverter) ToPosition(offset int) (int, int, error) {
if offset > l.file.Size() { _, line, col, err := positionFromOffset(l.file, offset)
return 0, 0, fmt.Errorf("offset %v is past the end of the file %v", offset, l.file.Size()) return line, col, err
}
pos := l.file.Pos(offset)
p := l.fset.Position(pos)
if offset == l.file.Size() {
return p.Line + 1, 1, nil
}
return p.Line, p.Column, nil
} }
func (l *TokenConverter) ToOffset(line, col int) (int, error) { func (l *TokenConverter) ToOffset(line, col int) (int, error) {

18
vendor/gopkg.in/yaml.v2/.travis.yml generated vendored
View file

@ -1,12 +1,16 @@
language: go language: go
go: go:
- 1.4 - "1.4.x"
- 1.5 - "1.5.x"
- 1.6 - "1.6.x"
- 1.7 - "1.7.x"
- 1.8 - "1.8.x"
- 1.9 - "1.9.x"
- tip - "1.10.x"
- "1.11.x"
- "1.12.x"
- "1.13.x"
- "tip"
go_import_path: gopkg.in/yaml.v2 go_import_path: gopkg.in/yaml.v2

14
vendor/gopkg.in/yaml.v2/decode.go generated vendored
View file

@ -319,10 +319,14 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm
} }
const ( const (
// 400,000 decode operations is ~500kb of dense object declarations, or ~5kb of dense object declarations with 10000% alias expansion // 400,000 decode operations is ~500kb of dense object declarations, or
// ~5kb of dense object declarations with 10000% alias expansion
alias_ratio_range_low = 400000 alias_ratio_range_low = 400000
// 4,000,000 decode operations is ~5MB of dense object declarations, or ~4.5MB of dense object declarations with 10% alias expansion
// 4,000,000 decode operations is ~5MB of dense object declarations, or
// ~4.5MB of dense object declarations with 10% alias expansion
alias_ratio_range_high = 4000000 alias_ratio_range_high = 4000000
// alias_ratio_range is the range over which we scale allowed alias ratios // alias_ratio_range is the range over which we scale allowed alias ratios
alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)
) )
@ -784,8 +788,7 @@ func (d *decoder) merge(n *node, out reflect.Value) {
case mappingNode: case mappingNode:
d.unmarshal(n, out) d.unmarshal(n, out)
case aliasNode: case aliasNode:
an, ok := d.doc.anchors[n.value] if n.alias != nil && n.alias.kind != mappingNode {
if ok && an.kind != mappingNode {
failWantMap() failWantMap()
} }
d.unmarshal(n, out) d.unmarshal(n, out)
@ -794,8 +797,7 @@ func (d *decoder) merge(n *node, out reflect.Value) {
for i := len(n.children) - 1; i >= 0; i-- { for i := len(n.children) - 1; i >= 0; i-- {
ni := n.children[i] ni := n.children[i]
if ni.kind == aliasNode { if ni.kind == aliasNode {
an, ok := d.doc.anchors[ni.value] if ni.alias != nil && ni.alias.kind != mappingNode {
if ok && an.kind != mappingNode {
failWantMap() failWantMap()
} }
} else if ni.kind != mappingNode { } else if ni.kind != mappingNode {

78
vendor/gopkg.in/yaml.v2/scannerc.go generated vendored
View file

@ -634,13 +634,14 @@ func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {
need_more_tokens = true need_more_tokens = true
} else { } else {
// Check if any potential simple key may occupy the head position. // Check if any potential simple key may occupy the head position.
if !yaml_parser_stale_simple_keys(parser) { for i := len(parser.simple_keys) - 1; i >= 0; i-- {
return false
}
for i := range parser.simple_keys {
simple_key := &parser.simple_keys[i] simple_key := &parser.simple_keys[i]
if simple_key.possible && simple_key.token_number == parser.tokens_parsed { if simple_key.token_number < parser.tokens_parsed {
break
}
if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {
return false
} else if valid && simple_key.token_number == parser.tokens_parsed {
need_more_tokens = true need_more_tokens = true
break break
} }
@ -678,11 +679,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {
return false return false
} }
// Remove obsolete potential simple keys.
if !yaml_parser_stale_simple_keys(parser) {
return false
}
// Check the indentation level against the current column. // Check the indentation level against the current column.
if !yaml_parser_unroll_indent(parser, parser.mark.column) { if !yaml_parser_unroll_indent(parser, parser.mark.column) {
return false return false
@ -837,29 +833,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {
"found character that cannot start any token") "found character that cannot start any token")
} }
// Check the list of potential simple keys and remove the positions that func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {
// cannot contain simple keys anymore. if !simple_key.possible {
func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { return false, true
// Check for a potential simple key for each flow level.
for i := range parser.simple_keys {
simple_key := &parser.simple_keys[i]
// The specification requires that a simple key
//
// - is limited to a single line,
// - is shorter than 1024 characters.
if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) {
// Check if the potential simple key to be removed is required.
if simple_key.required {
return yaml_parser_set_scanner_error(parser,
"while scanning a simple key", simple_key.mark,
"could not find expected ':'")
}
simple_key.possible = false
}
} }
return true
// The 1.2 specification says:
//
// "If the ? indicator is omitted, parsing needs to see past the
// implicit key to recognize it as such. To limit the amount of
// lookahead required, the “:” indicator must appear at most 1024
// Unicode characters beyond the start of the key. In addition, the key
// is restricted to a single line."
//
if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {
// Check if the potential simple key to be removed is required.
if simple_key.required {
return false, yaml_parser_set_scanner_error(parser,
"while scanning a simple key", simple_key.mark,
"could not find expected ':'")
}
simple_key.possible = false
return false, true
}
return true, true
} }
// Check if a simple key may start at the current position and add it if // Check if a simple key may start at the current position and add it if
@ -879,8 +876,8 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) bool {
possible: true, possible: true,
required: required, required: required,
token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),
mark: parser.mark,
} }
simple_key.mark = parser.mark
if !yaml_parser_remove_simple_key(parser) { if !yaml_parser_remove_simple_key(parser) {
return false return false
@ -912,7 +909,12 @@ const max_flow_level = 10000
// Increase the flow level and resize the simple key list if needed. // Increase the flow level and resize the simple key list if needed.
func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {
// Reset the simple key on the next level. // Reset the simple key on the next level.
parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{
possible: false,
required: false,
token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),
mark: parser.mark,
})
// Increase the flow level. // Increase the flow level.
parser.flow_level++ parser.flow_level++
@ -1286,7 +1288,11 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool {
simple_key := &parser.simple_keys[len(parser.simple_keys)-1] simple_key := &parser.simple_keys[len(parser.simple_keys)-1]
// Have we found a simple key? // Have we found a simple key?
if simple_key.possible { if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {
return false
} else if valid {
// Create the KEY token and insert it into the queue. // Create the KEY token and insert it into the queue.
token := yaml_token_t{ token := yaml_token_t{
typ: yaml_KEY_TOKEN, typ: yaml_KEY_TOKEN,

2
vendor/gopkg.in/yaml.v2/yaml.go generated vendored
View file

@ -89,7 +89,7 @@ func UnmarshalStrict(in []byte, out interface{}) (err error) {
return unmarshal(in, out, true) return unmarshal(in, out, true)
} }
// A Decorder reads and decodes YAML values from an input stream. // A Decoder reads and decodes YAML values from an input stream.
type Decoder struct { type Decoder struct {
strict bool strict bool
parser *parser parser *parser

14
vendor/modules.txt vendored
View file

@ -42,7 +42,7 @@ github.com/ghodss/yaml
github.com/go-openapi/jsonpointer github.com/go-openapi/jsonpointer
# github.com/go-openapi/jsonreference v0.19.3 # github.com/go-openapi/jsonreference v0.19.3
github.com/go-openapi/jsonreference github.com/go-openapi/jsonreference
# github.com/go-openapi/spec v0.19.3 # github.com/go-openapi/spec v0.19.4
github.com/go-openapi/spec github.com/go-openapi/spec
# github.com/go-openapi/swag v0.19.5 # github.com/go-openapi/swag v0.19.5
github.com/go-openapi/swag github.com/go-openapi/swag
@ -183,13 +183,13 @@ github.com/ulule/limiter/v3
github.com/ulule/limiter/v3/drivers/store/memory github.com/ulule/limiter/v3/drivers/store/memory
github.com/ulule/limiter/v3/drivers/store/redis github.com/ulule/limiter/v3/drivers/store/redis
github.com/ulule/limiter/v3/drivers/store/common github.com/ulule/limiter/v3/drivers/store/common
# github.com/urfave/cli v1.22.1 # github.com/urfave/cli v1.22.2
github.com/urfave/cli github.com/urfave/cli
# github.com/valyala/bytebufferpool v1.0.0 # github.com/valyala/bytebufferpool v1.0.0
github.com/valyala/bytebufferpool github.com/valyala/bytebufferpool
# github.com/valyala/fasttemplate v1.1.0 # github.com/valyala/fasttemplate v1.1.0
github.com/valyala/fasttemplate github.com/valyala/fasttemplate
# golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 # golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1
golang.org/x/crypto/bcrypt golang.org/x/crypto/bcrypt
golang.org/x/crypto/acme golang.org/x/crypto/acme
golang.org/x/crypto/acme/autocert golang.org/x/crypto/acme/autocert
@ -197,9 +197,9 @@ golang.org/x/crypto/blowfish
# golang.org/x/lint v0.0.0-20190409202823-959b441ac422 # golang.org/x/lint v0.0.0-20190409202823-959b441ac422
golang.org/x/lint/golint golang.org/x/lint/golint
golang.org/x/lint golang.org/x/lint
# golang.org/x/net v0.0.0-20191021144547-ec77196f6094 # golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933
golang.org/x/net/idna golang.org/x/net/idna
# golang.org/x/sys v0.0.0-20191023151326-f89234f9a2c2 # golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9
golang.org/x/sys/unix golang.org/x/sys/unix
# golang.org/x/text v0.3.2 # golang.org/x/text v0.3.2
golang.org/x/text/transform golang.org/x/text/transform
@ -207,7 +207,7 @@ golang.org/x/text/unicode/norm
golang.org/x/text/secure/bidirule golang.org/x/text/secure/bidirule
golang.org/x/text/unicode/bidi golang.org/x/text/unicode/bidi
golang.org/x/text/width golang.org/x/text/width
# golang.org/x/tools v0.0.0-20191023202404-2b779830f9d3 # golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d
golang.org/x/tools/go/loader golang.org/x/tools/go/loader
golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/ast/astutil
golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/gcexportdata
@ -232,7 +232,7 @@ gopkg.in/d4l3k/messagediff.v1
gopkg.in/gomail.v2 gopkg.in/gomail.v2
# gopkg.in/testfixtures.v2 v2.5.3 # gopkg.in/testfixtures.v2 v2.5.3
gopkg.in/testfixtures.v2 gopkg.in/testfixtures.v2
# gopkg.in/yaml.v2 v2.2.4 # gopkg.in/yaml.v2 v2.2.7
gopkg.in/yaml.v2 gopkg.in/yaml.v2
# honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a # honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a
honnef.co/go/tools/cmd/staticcheck honnef.co/go/tools/cmd/staticcheck