mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package netlink
 | |
| 
 | |
| import (
 | |
| 	"unsafe"
 | |
| )
 | |
| 
 | |
| // Functions and values used to properly align netlink messages, headers,
 | |
| // and attributes.  Definitions taken from Linux kernel source.
 | |
| 
 | |
| // #define NLMSG_ALIGNTO   4U
 | |
| const nlmsgAlignTo = 4
 | |
| 
 | |
| // #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
 | |
| func nlmsgAlign(len int) int {
 | |
| 	return ((len) + nlmsgAlignTo - 1) & ^(nlmsgAlignTo - 1)
 | |
| }
 | |
| 
 | |
| // #define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
 | |
| func nlmsgLength(len int) int {
 | |
| 	return len + nlmsgHeaderLen
 | |
| }
 | |
| 
 | |
| // #define NLMSG_HDRLEN     ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
 | |
| var nlmsgHeaderLen = nlmsgAlign(int(unsafe.Sizeof(Header{})))
 | |
| 
 | |
| // #define NLA_ALIGNTO             4
 | |
| const nlaAlignTo = 4
 | |
| 
 | |
| // #define NLA_ALIGN(len)          (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
 | |
| func nlaAlign(len int) int {
 | |
| 	return ((len) + nlaAlignTo - 1) & ^(nlaAlignTo - 1)
 | |
| }
 | |
| 
 | |
| // Because this package's Attribute type contains a byte slice, unsafe.Sizeof
 | |
| // can't be used to determine the correct length.
 | |
| const sizeofAttribute = 4
 | |
| 
 | |
| // #define NLA_HDRLEN              ((int) NLA_ALIGN(sizeof(struct nlattr)))
 | |
| var nlaHeaderLen = nlaAlign(sizeofAttribute)
 |