mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-20 03:25:18 +00:00
util: function to get local nl_pid used by netlink event socket
This value will be needed to set the src_pid when sending netlink messages to lldpad. It is part of the solution to: https://bugzilla.redhat.com/show_bug.cgi?id=816465 Note that libnl's port generation algorithm guarantees that the nl_socket_get_local_port() will always be > 0 (since it is "getpid() + (n << 22>" where n is always < 1024), so it is okay to cast the uint32_t to int (thus allowing us to use -1 as an error sentinel). (cherry picked from commit c99e93758d44e7c6d62dbd3d064b6df61d1fefb2)
This commit is contained in:
parent
443e37da42
commit
ce5d17b316
@ -1325,6 +1325,7 @@ virNetlinkCommand;
|
||||
virNetlinkEventAddClient;
|
||||
virNetlinkEventRemoveClient;
|
||||
virNetlinkEventServiceIsRunning;
|
||||
virNetlinkEventServiceLocalPid;
|
||||
virNetlinkEventServiceStop;
|
||||
virNetlinkEventServiceStart;
|
||||
virNetlinkShutdown;
|
||||
|
@ -368,6 +368,24 @@ virNetlinkEventServiceIsRunning(void)
|
||||
return server != NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* virNetlinkEventServiceLocalPid:
|
||||
*
|
||||
* Returns the nl_pid value that was used to bind() the netlink socket
|
||||
* used by the netlink event service, or -1 on error (netlink
|
||||
* guarantees that this value will always be > 0).
|
||||
*/
|
||||
int virNetlinkEventServiceLocalPid(void)
|
||||
{
|
||||
if (!(server && server->netlinknh)) {
|
||||
netlinkError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("netlink event service not running"));
|
||||
return -1;
|
||||
}
|
||||
return (int)nl_socket_get_local_port(server->netlinknh);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* virNetlinkEventServiceStart:
|
||||
*
|
||||
|
@ -61,6 +61,11 @@ int virNetlinkEventServiceStart(void);
|
||||
*/
|
||||
bool virNetlinkEventServiceIsRunning(void);
|
||||
|
||||
/**
|
||||
* virNetlinkEventServiceLocalPid: returns nl_pid used to bind() netlink socket
|
||||
*/
|
||||
int virNetlinkEventServiceLocalPid(void);
|
||||
|
||||
/**
|
||||
* virNetlinkEventAddClient: register a callback for handling of netlink messages
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user