Coder Social home page Coder Social logo

Comments (6)

stapelberg avatar stapelberg commented on August 11, 2024

I gave this a shot, but hit an issue: https://godoc.org/github.com/mdlayher/netlink#AttributeDecoder.Uint32 seems to decode an uint32 using the host’s endianness: https://github.com/mdlayher/netlink/blob/3d8cc9af89458b8b6a9ce675d4dfa50a724e9025/nlenc/int.go#L78

For nftables, however, values are stored in big endian most of the time, only the resource id in the extraHeader field is stored in native endian.

A specific place where this causes issues is:

objectType = binaryutil.BigEndian.Uint32(attr.Data)

With the current code, objectType will be set to 1, but when using ad.Uint32(), it gets set to 16777216.

from nftables.

mdlayher avatar mdlayher commented on August 11, 2024

Interesting! Every netlink family I've worked with has used native endianness for attributes so far. I suppose it wouldn't hurt for me to add an option to set the endianness on the decoder!

That said, if nftables uses different endianness in the same attribute lists a lot, this could be a hassle. As a workaround, you could use Do to add special decoding logic for big endian fields.

from nftables.

stapelberg avatar stapelberg commented on August 11, 2024

From what I can tell, it’s all big endian for nftables.

Let me know what decision you end up with, and I can give this another shot.

from nftables.

mdlayher avatar mdlayher commented on August 11, 2024

I've added a new tunable as of mdlayher/netlink@ff3050a: https://godoc.org/github.com/mdlayher/netlink#AttributeDecoder.

I considered adding it to the constructor as well, but figured it'd be cleaner to allow overriding the default after construction. Let me know what you think.

from nftables.

stapelberg avatar stapelberg commented on August 11, 2024

Yeah, this worked. Are you planning to add an AttributeEncoder, too? :)

from nftables.

mdlayher avatar mdlayher commented on August 11, 2024

Yeah; starting to think about that problem as well due to the situations I've gotten myself into with: https://github.com/mdlayher/wireguardctrl/blob/master/internal/wgnl/configure_linux.go and its tests. I imagine I'll do something reasonably similar.

from nftables.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.