Connection code for Source Specific Multicast under nasm global _start

section .data add: db 0x4b, 0x9c, 0x00, 0x00, 0x00, 0x00, 0xa, 0x32, 0x81, 0x5a len: equ $-add section .bss buffer: resb 1025 buffer_len: equ 1024 buff_read: resb 1025 section .text _start: mov rax, 41 mov rdi, 2 mov rsi, 2 mov rdx, 0 syscall mov dword [rsp-4], eax mov dword [rsp-8], 0xefc346b ;group_ip 239.195.70.11 mov rax, 54 ;sys_setsockopt mov rdi, [rsp-4] mov rsi, 1 mov rdx, 2 lea r10, [rsp-8] mov r8, 4 syscall xor rcx, rcx mov byte [rsp-26], 0x27 ;IP_ADD_SOURCE_MEMBERSHIP 39 mov byte [rsp-25], 0x00 ;IPPROTO_IP 0 mov byte [rsp-24], 0x02 ;af_inet mov word [rsp-22], 0x9c41 ;port 40001 mov dword [rsp-18], 0x5a8132a ;source_ip 10.50.129.90 mov qword [rsp-16], rcx mov rax, 49 ;sys_bind mov rdi, [rsp-4] lea rsi, [rsp-24] mov rdx, 16 syscall mov rax, 54 ;sys_setsockopt mov rdi, [rsp-4] mov rsi, 0 ;ipproto_ip mov rdx, [rsp-26] ;IP_ADD_SOURCE_MEMBERSHIP 0x27 mov r10, [add] mov r8, len syscall ... 

when checking with gdb, the last syscall returns error -92, what is the reason?

    1 answer 1

    grep 92 usr/include/asm-generic/errno.h

     ... #define ENOPROTOOPT 92 /* Protocol not available */ ... 

    multicast hike in the kernel is disabled