etchのデフォルトのカーネルはDCCPに標準対応していることに気づく。わざわざsargeで検証することはない。
しかしetchカーネルでDCCPなVLCを動作させても”Protocol not supported”のエラーが出る。
socket周りを調べるとDCCP – LinuxNetに以下の資料が出てきた。
# Create sockets
server = Socket.new(Socket::AF_INET, Socket::SOCK_DCCP, Socket::IPPROTO_DCCP)
client = Socket.new(Socket::AF_INET, Socket::SOCK_DCCP, Socket::IPPROTO_DCCP)
rubyのコードだが、SOCK_DCCPは6で定義される。
しかし、VLCのsrc/network/io.cは以下の通りで、
hints.ai_socktype = SOCK_DGRAM;
int fd = net_Socket (p_this, ptr->ai_family, ptr->ai_socktype,
proto ?: ptr->ai_protocol);
SOCK_DGRAMは2で定義される。
以上のことから、SOCKETのタイプが違うことによってプロトコルが定義できないのかと思っているのだが、修正しても上手くいかない。
もともとUDPなんて決め打ちの依存関係があるので、そこらへんで上手くいっていない可能性が高いが…
VLCのビルド (6) への2件のフィードバック