Open vSwitch 2.4.0 の実装では、次のことが行われています。
#ifdef __CHECKER__
#define OVS_BITWISE __attribute__((bitwise))
#define OVS_FORCE __attribute__((force))
#else
#define OVS_BITWISE
#define OVS_FORCE
#endif
/* The ovs_be<N> types indicate that an object is in big-endian, not
* native-endian, byte order. They are otherwise equivalent to uint<N>_t. */
typedef uint16_t OVS_BITWISE ovs_be16;
typedef struct {
ovs_be16 hi, lo;
} ovs_16aligned_be32;
次の変数があります。
ovs_16aligned_be32 srcIP;
ovs_be16 srcPort ;
srcIP
axxx.yyy.zzz.ttt
と thesrcPort
をリトルエンディアンに変換するにはどうすればよいuint16_t
ですか?