From f98060925afd755f149340dbc0b55da10a0aa8d1 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Fri, 25 Apr 2025 18:27:01 +0000 Subject: [PATCH] incus: 6.11.0 -> 6.12.0 https://discuss.linuxcontainers.org/t/incus-6-12-has-been-released/23556 https://github.com/lxc/incus/releases/tag/v6.12.0 --- pkgs/by-name/in/incus/1995.diff | 93 +++++++++++++++++++++++++++++++ pkgs/by-name/in/incus/package.nix | 11 ++-- 2 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 pkgs/by-name/in/incus/1995.diff diff --git a/pkgs/by-name/in/incus/1995.diff b/pkgs/by-name/in/incus/1995.diff new file mode 100644 index 000000000000..092bd149d856 --- /dev/null +++ b/pkgs/by-name/in/incus/1995.diff @@ -0,0 +1,93 @@ +diff --git a/internal/server/firewall/drivers/drivers_consts.go b/internal/server/firewall/drivers/drivers_consts.go +index 2790e07a605..944bca5930e 100644 +--- a/internal/server/firewall/drivers/drivers_consts.go ++++ b/internal/server/firewall/drivers/drivers_consts.go +@@ -1,8 +1,6 @@ + package drivers + + import ( +- "encoding/json" +- "fmt" + "net" + ) + +@@ -67,62 +65,12 @@ type NftListSetsOutput struct { + + // NftListSetsEntry structure to read JSON output of nft set listing. + type NftListSetsEntry struct { +- Metainfo *NftMetainfo `json:"metainfo,omitempty"` +- Set *NftSet `json:"set,omitempty"` +-} +- +-// NftMetainfo structure representing metainformation returned by nft. +-type NftMetainfo struct { +- Version string `json:"version"` +- ReleaseName string `json:"release_name"` +- JSONSchemaVersion int `json:"json_schema_version"` ++ Set *NftSet `json:"set,omitempty"` + } + + // NftSet structure to parse the JSON of a set returned by nft -j list sets. + type NftSet struct { +- Family string `json:"family"` +- Name string `json:"name"` +- Table string `json:"table"` +- Type string `json:"type"` +- Handle int `json:"handle"` +- Flags []string `json:"flags"` +- Elem ElemField `json:"elem"` +-} +- +-// ElemField supports both string elements (IP, MAC) and dictionary-based CIDR elements. +-// In order to parse it correctly a custom unsmarshalling is defined in drivers_nftables.go . +-type ElemField struct { +- Addresses []string // Stores plain addresses and CIDR notations as strings. +-} +- +-// UnmarshalJSON handles both plain strings and CIDR dictionaries inside `elem`. +-func (e *ElemField) UnmarshalJSON(data []byte) error { +- var rawElems []any +- err := json.Unmarshal(data, &rawElems) +- if err != nil { +- return err +- } +- +- for _, elem := range rawElems { +- switch v := elem.(type) { +- case string: +- // Plain address (IPv4, IPv6, or MAC). +- e.Addresses = append(e.Addresses, v) +- case map[string]any: +- // CIDR notation (prefix dictionary). +- prefix, ok := v["prefix"].(map[string]any) +- if ok { +- addr, addrOk := prefix["addr"].(string) +- lenFloat, lenOk := prefix["len"].(float64) // JSON numbers are float64 by default. +- if addrOk && lenOk { +- e.Addresses = append(e.Addresses, fmt.Sprintf("%s/%d", addr, int(lenFloat))) +- } +- } +- +- default: +- return fmt.Errorf("Unsupported element type in NFTables set: %v", elem) +- } +- } +- +- return nil ++ Family string `json:"family"` ++ Name string `json:"name"` ++ Table string `json:"table"` + } +diff --git a/internal/server/firewall/drivers/drivers_nftables.go b/internal/server/firewall/drivers/drivers_nftables.go +index fd9be2e2fbb..f803de9dff5 100644 +--- a/internal/server/firewall/drivers/drivers_nftables.go ++++ b/internal/server/firewall/drivers/drivers_nftables.go +@@ -387,7 +387,7 @@ func (d Nftables) NetworkClear(networkName string, _ bool, _ []uint) error { + return fmt.Errorf("Failed clearing nftables rules for network %q: %w", networkName, err) + } + +- err = d.RemoveIncusAddressSets("inet") ++ err = d.RemoveIncusAddressSets("bridge") + if err != nil { + return fmt.Errorf("Error in deletion of address sets: %w", err) + } diff --git a/pkgs/by-name/in/incus/package.nix b/pkgs/by-name/in/incus/package.nix index c963f378a0e7..68044192d84f 100644 --- a/pkgs/by-name/in/incus/package.nix +++ b/pkgs/by-name/in/incus/package.nix @@ -1,8 +1,11 @@ import ./generic.nix { - hash = "sha256-S6PTtgP4MFV+kiEgV8PBvek1SrVjLaCR9OJy/6jqJGE="; - version = "6.11.0"; - vendorHash = "sha256-wKL+woCMjGJwCBG/JBhFbY4uc97/5K7OWPZRp0J+5DQ="; - patches = [ ]; + hash = "sha256-hgZc30SRnmALTvuD32dNuO0r4pfpXXvN4CtJqn2fGuk="; + version = "6.12.0"; + vendorHash = "sha256-/GwJG6kmjbiUUh0AWQ+IUbeK1kRcuWrwmNdTzH5LT38="; + patches = [ + # fix nft, remove 6.13 + ./1995.diff + ]; nixUpdateExtraArgs = [ "--override-filename=pkgs/by-name/in/incus/package.nix" ];