2017-09-21 4 views
1

Je suis en train suivant programme simple sur ClearOS 7.3, 64 bitsNetLink sur ClearOS 7.3 question

#include <sys/socket.h> 
#include <linux/netlink.h> 
#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 
#include <errno.h> 

int main() 
{ 
    int flags =0; 
    int bus = NETLINK_NETFILTER; 

    int sock_fd = socket(AF_NETLINK, SOCK_RAW | flags, bus); 
    if(sock_fd<0) 
    { 
     printf("\nsocket failed with error no = %d and error msg = %s\n", 
           errno, strerror(errno)); 

     return -1; 
    } 

    printf("\nOP completed successfully..!\n"); 
    return 0; 
} 

J'obtiens l'erreur suivante:

socket failed with error no = 93 and error msg = Protocol not supported

Mes coordonnées OS sont:

  • Version ClearOS 7.3.0 (Final)
  • Linux 3.10.0-514.26.2.v7.x86_64 # 1 SMP Wed Jul 5 10 : 37: 54 MDT 2017 x86_64 x86_64 x86_64 GNU/Linux

Aidez-nous s'il vous plaît.

Répondre

0

Fonctionne pour moi.

Le protocole NETLINK_NETFILTER est enregistré par le module nfnetlink.

Dans mon cas, le noyau enregistre automatiquement le module puisque ce code utilise, mais si le vôtre ne pas, essayez de l'insérer manuellement:

$ sudo modprobe nfnetlink 

Et puis essayez d'ouvrir l'appareil à nouveau.

+0

Très bien. Ça a marché. pouvez-vous s'il vous plaît m'aider à comprendre la théorie derrière? Je pensais, il devrait charger automatiquement le module nfnetlink, une fois que le programme est appelé. Ce problème s'est spécifiquement produit sur ClearOS version 7.3.0 (Final) – Vikram

+0

Désolé, mais je ne sais pas vraiment de quoi il dépend. J'imagine qu'il y a un drapeau avec lequel votre noyau a été compilé qui empêche le chargement automatique du module à des fins de sécurité ou quelque chose comme ça. –