Socket.recvmsg can't receive file descriptor on FreeBSD

It seems socket.recvmsg can’t receive file descriptors on FreeBSD. Is it a normal behavior or actually a bug?

Reproduce

server.py

import socket
import array

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind('server.sock')
sock.listen(1)

def handle_client():
    while True:
        conn, addr = sock.accept()
        a = array.array('i')
        bytes_size = a.itemsize * 1
        msg, ancdata, flags, addr = conn.recvmsg(1, socket.CMSG_LEN(bytes_size))
        print(msg)
        print(ancdata)

handle_client()

client.py

import socket
import array
import os

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('server.sock')
fds = array.array('i', [os.pipe()[0]])
msg = bytes([len(fds) % 256])
t = [(socket.SOL_SOCKET, socket.SCM_RIGHTS, fds)]
print(t)

Output

server.py

// FreeBSD
b'\x01'
[]
// Linux
b'\x01'
[(1, 1, b'\x08\x00\x00\x00')]

client.py

// FreeBSD
b'\x01'
[(65535, 1, array('i', [4]))]
// Linux
b'\x01'
[(1, 1, array('i', [4]))

Extra Information

Test on:
FreeBSD 13.2-REALEASE
Python 3.9.18 (install by pkg)

The mechanism used is a linux kernel API only I think.