blob: d124f1cfe8a46610502d9a1135a9faabe5e7cc57 [file] [log] [blame]
package jnr.posix;
import jnr.ffi.*;
import jnr.ffi.Runtime;
/**
* @author Bob McWhirter
*/
public class LinuxSocketMacros implements SocketMacros {
public static final LinuxSocketMacros INSTANCE = new LinuxSocketMacros();
public int CMSG_ALIGN(int len) {
int sizeof_size_t = Runtime.getSystemRuntime().findType(TypeAlias.size_t).size();
return (len + sizeof_size_t - 1) & ~(sizeof_size_t - 1);
}
public int CMSG_SPACE(int l) {
return CMSG_ALIGN(l) + CMSG_ALIGN(LinuxCmsgHdr.layout.size());
}
public int CMSG_LEN(int l) {
return CMSG_ALIGN( LinuxCmsgHdr.layout.size() ) + l;
}
public Pointer CMSG_DATA(Pointer cmsg) {
return cmsg.slice(CMSG_ALIGN(LinuxCmsgHdr.layout.size()));
}
}