summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-rtnl/rtnl-message.c
AgeCommit message (Collapse)Author
2014-04-21silence warningsThomas Hindoe Paaboel Andersen
2014-04-19sd-rtnl: socet_read_message - make sure we only shrink the partial rqueue ↵Tom Gundersen
when processing multi-part message
2014-04-19sd-rtnl: message - expose DUMP flag in the apiTom Gundersen
2014-04-19sd-rtnl: message - concatenate multi-part messages from different packetsTom Gundersen
2014-04-19sd-rtnl: message - don't put NULL message on rqueueTom Gundersen
If nothing interesting was receieved we should not put anything on the queue.
2014-04-19sd-rtnl: message - make room for all pending messages, not just the firstTom Gundersen
Also, don't actually read any of the message when peeking, just get its length.
2014-04-14sd-rtnl: message_addr - allow dumping of messagesTom Gundersen
2014-04-14sd-rtnl: socket_read - use a read bufferTom Gundersen
Rather than allocating/freeing memory for each message read, keep a global read buffer in the rtnl object. Also, rather than using a fixed size, peek at the pending message header to get the message size and reallocate as necessary.
2014-04-14sd-rtnl: multi-part message - store as linked-list rather than independent ↵Tom Gundersen
messages This means the API can stay the same as for single-part messages by simply passing the head message around. Unrefing the head of the linked list unrefs the whole list.
2014-04-14sd-rtnl: message_addr - expose a few more gettersTom Gundersen
2014-04-11sd-rtnl: use SO_PASSCREDTom Gundersen
This unifies the socket handling with other sd-* libraries.
2014-04-10sd-rtnl: don't drop multi-part messagesTom Gundersen
We still only return the first message part in callback/synchronous calls.
2014-04-03networkd: smooth transition from ipv4ll to dhcp addressUmut Tezduyar Lindskog
Currently when both ipv4ll and dhcp are enabled, ipv4ll address (if one has been claimed) is removed when dhcp address is aquired. This is not the best thing to do since there might be clients unaware of the removal trying to communicate. This patch provides a smooth transition between ipv4ll and dhcp. If ipv4ll address was claimed [1] before dhcp, address is marked as deprecated. Deprecated address is still a valid address and packets can be received on it but address cannot be selected as a source address. If dhcp lease cannot be extended, then ipv4ll address is marked as valid again. [1] If there is no collision, claiming IPv4LL takes between 4 to 7 seconds.
2014-03-31sd-rtnl: fix off-by-oneSteven Siloti
Also fix type parameter passed to new0
2014-03-29sd-rtnl: message - fix clang compile warningTom Gundersen
2014-03-28sd-rtnl: message - don't log about out-of-range attribute typesTom Gundersen
We will easily get these when running on newer kernels. However, we can safely ignore them as we anyway don't know what to do with them.
2014-03-28sd-rtnl: rework rtnl type systemTom Gundersen
Use a static table with all the typing information, rather than repeated switch statements. This should make it a lot simpler to add new types. We need to keep all the type info to be able to create containers without exposing their implementation details to the users of the library. As a freebee we verify the types of appended/read attributes. The API is extended to nicely deal with unions of container types.
2014-03-28sd-rtnl: message - fix memory leakTom Gundersen
2014-03-28sd-rtnl: message - don't reference associated rtnl objectTom Gundersen
The object is not currently used, so just drop the refenence. If/when we end up using the object in the future, we must make sure to deal with possible mutual references between rtnl busses and their queued messages; as is done in sd-bus.
2014-03-25sd-rtnl: add support for tunnel attributesSusant Sahani
Added support for tunneling netlink attrributes (ipip, gre, sit). These works with kernel module ipip, gre and sit . The test cases are moved to a separate file and manual test as well because they require respective kernel modules as well.
2014-03-25sd-rtnl: message - don't try to enter unsupported containersTom Gundersen
Currently we only support containers in RTM_*LINK messages. Reported-by: "Thomas H.P. Andersen <phomes@gmail.com>"
2014-03-24sd-rtnl: message parsing - log when ignoring message attributesTom Gundersen
2014-03-24sd-rtnl: add sd_rtnl_message_enter_container()Tom Gundersen
Extend rta_offset_tb into a stack of offset tables, one for each parent of the current container, and make sd_rtnl_message_{enter,exit}_container() pop/push to this stack. Also make sd_rtnl_message_rewind() parse the top-level container, and use this when reading a message from the socket. This changes the API by dropping the now redundant sd_rtnl_message_read() method.
2014-03-23sd-rtnl: message - protect against SEGFAULT when reading messagesTom Gundersen
Make sure the returned data fits the datatype we requested. Otherwise return -EIO. Also fix a broken test that this exposed.
2014-03-23sd-rtnl: message - don't skip parts of message when parsingTom Gundersen
If a message type occurs repeatedly let the last one win. Also, don't skip type == MAX. Based on patch from: Susant Sahani <susant@redhat.com>
2014-03-16sd-rtnl: never treat broadcasts as repliesTom Gundersen
Otherwise the sequence number of a broadcast may match the sequence number of a pending unicast message and cause confusion.
2014-03-15sd-rtnl: make RTM_NEWLINK report EEXIST by defaultTom Gundersen
Use RTM_SETLINK to update an existing link.
2014-03-07sd-rtnl: introduce read ether and ip address functionsSusant Sahani
This patch introduces reading ethernet address and IPV4/IPv6 as well which is based on table based look up. [tomegun: rename read_ether() to read_ether_addr() to match the append function.]
2014-03-06sd-rtnl:introduce table-based lookup and typesafe read() functionsSusant Sahani
This patch introduces new netlink attribute parsing logic which is table based lookup and sd_rtnl_message_read_* methods for reading attributes. By doing this user does not have to loop for the attribute values . Only providing the attribute type it gets the attribute values which is optimized and sd_rtnl_message_read_* methods are simplified.
2014-03-05sd-rtnl: do not blindly enter containers in message_read()Tom Gundersen
We need a separate container_enter() function, which will be part of a largerg API change. For now, just fix message_read().
2014-03-03sd-network: IPv4 link-local support [v2]Umut Tezduyar Lindskog
Implements IPv4LL with respect to RFC 3927 (http://tools.ietf.org/rfc/rfc3927.txt) and integrates it with networkd. Majority of the IPv4LL state machine is taken from avahi (http://avahi.org/) project's autoip. IPv4LL can be enabled by IPv4LL=yes under [Network] section of .network file. IPv4LL works independent of DHCP but if DHCP lease is aquired, then LL address will be dropped. [tomegun: removed a trailing newline and a compiler warning]
2014-02-25nspawn: add new switch --network-macvlan= to add a macvlan device to the ↵Lennart Poettering
container
2014-02-24Remove dead lines in various placesZbigniew Jędrzejewski-Szmek
As pointed-out by clang -Wunreachable-code. No behaviour changes.
2014-02-20api: in constructor function calls, always put the returned object pointer ↵Lennart Poettering
first (or second) Previously the returned object of constructor functions where sometimes returned as last, sometimes as first and sometimes as second parameter. Let's clean this up a bit. Here are the new rules: 1. The object the new object is derived from is put first, if there is any 2. The object we are creating will be returned in the next arguments 3. This is followed by any additional arguments Rationale: For functions that operate on an object we always put that object first. Constructors should probably not be too different in this regard. Also, if the additional parameters might want to use varargs which suggests to put them last. Note that this new scheme only applies to constructor functions, not to all other functions. We do give a lot of freedom for those. Note that this commit only changes the order of the new functions we added, for old ones we accept the wrong order and leave it like that.
2014-02-19missing.h: add some IFLA_* constantsTom Gundersen
These were added to the kernel between 3.5 and 3.9, let's not require such recent kernels (yet).
2014-02-18sd-rtnl-message: store reference to the bus in the messageTom Gundersen
This mimics the sd-bus api, as we may need it in the future.
2014-02-16sd-rtnl: do not require ifindex to be set for SETLINK messagesTom Gundersen
The kernel will then look up the ifindex itself based on the name. This should be used very carefully as it is racey. [This was a left-over hunk from my previous nspawn patch.]
2014-02-15sd-rtnl: always include linux/rtnetlink.hTom Gundersen
2014-02-15sd-rtnl: message_open_container - don't take a 'size' argumentTom Gundersen
We can always know the size based on the type, so let's do this inside the library.
2014-02-15sd-rtnl: link flags - don't allow change = 0Tom Gundersen
The kernel will happily treat 0x0 as 0xffffffff, but it is for backwards compatibility only, so let's not perpetuate this.
2014-02-13rtnl: support adding VETH_INFO_PEER containers into rtnl messagesLennart Poettering
2014-02-13rtnl: rename constructors from the form sd_rtnl_xxx_yyy_new() to ↵Lennart Poettering
sd_rtnl_xxx_new_yyy() So far we followed the rule to always indicate the "flavour" of constructors after the "_new_" or "_open_" in the function name, so let's keep things in sync here for rtnl and do the same.
2014-02-10sd-rtnl: added support for a few more attributesSusant Sahani
2014-02-05Added attribute support for sd-rtnlSusant Sahani
Added sd_rtnl_message_append_u8 and few attribute support in sd_rtnl_message_append_u32 IFLA_GROUP, IFLA_TXQLEN, IFLA_NUM_TX_QUEUES, IFLA_NUM_RX_QUEUES
2014-01-30sd-rtnl: beef up rtnl-util a bitTom Gundersen
2014-01-24sd-rtnl: add support for reading containersTom Gundersen
Also insist on messages being sealed before reading them. In other words we don't allow interleaving of reading and appending to messages.
2014-01-24sd-rtnl: add support for nested containersTom Gundersen
2014-01-22sd-rtnl: simplify sd_rtnl_message_addr_new()Tom Gundersen
Split out into sd_rtnl_message_addr_set_{prefixlen,flags,scope}().
2014-01-22sd-rtnl: add sd_rtnl_message_append_u16()Tom Gundersen
2014-01-22sd-rtnl: link - allow setting the change maskTom Gundersen