--- rpl/src/instructions_o1.c 2015/06/08 14:11:38 1.83 +++ rpl/src/instructions_o1.c 2015/09/15 19:18:46 1.84 @@ -870,19 +870,6 @@ instruction_or(struct_processus *s_etat_ */ -#define d_BIND_TO_DEVICE 0 -#define d_BROADCAST 1 -#define d_DONT_ROUTE 2 -#define d_KEEP_ALIVE 3 -#define d_PRIORITY 4 -#define d_RECEIVE_BUFFER 5 -#define d_FORCE_RECEIVE_BUFFER 6 -#define d_SEND_BUFFER 7 -#define d_FORCE_SEND_BUFFER 8 -#define d_RECEIVING_TIMEOUT 9 -#define d_SENDING_TIMEOUT 10 -#define d_REUSE_ADDRESS 11 - static inline logical1 options_socket(struct_processus *s_etat_processus, struct_objet *s_objet_resultat, unsigned char *options, @@ -916,6 +903,9 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_BIND_TO_DEVICE; # else WARNING("BIND TO DEVICE"); # endif @@ -930,6 +920,9 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_BROADCAST; } if (options[d_DONT_ROUTE] == 'Y') @@ -941,6 +934,9 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_DONT_ROUTE; } if (options[d_KEEP_ALIVE] == 'Y') @@ -965,6 +961,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_PRIORITY; + (*((struct_socket *) (*s_objet_resultat).objet)).priorite = + (*priorite); # else WARNING("PRIORITY"); # endif @@ -980,6 +981,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_RECEIVE_BUFFER; + (*((struct_socket *) (*s_objet_resultat).objet)).buffer_reception = + (*buffer_reception); } if (options[d_FORCE_RECEIVE_BUFFER] == 'Y') @@ -993,6 +999,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_FORCE_RECEIVE_BUFFER; + (*((struct_socket *) (*s_objet_resultat).objet)).buffer_reception = + (*buffer_reception); # else WARNING("FORCE_RECEIVE_BUFFER"); # endif @@ -1008,6 +1019,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_SEND_BUFFER; + (*((struct_socket *) (*s_objet_resultat).objet)).buffer_emission = + (*buffer_emission); } if (options[d_FORCE_SEND_BUFFER] == 'Y') @@ -1021,6 +1037,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_FORCE_SEND_BUFFER; + (*((struct_socket *) (*s_objet_resultat).objet)).buffer_emission = + (*buffer_emission); # else WARNING("FORCE_SEND_BUFFER"); # endif @@ -1036,6 +1057,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_RECEIVING_TIMEOUT; + (*((struct_socket *) (*s_objet_resultat).objet)).timeout_reception = + (*timeout_reception); } if (options[d_SENDING_TIMEOUT] == 'Y') @@ -1048,6 +1074,11 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_SENDING_TIMEOUT; + (*((struct_socket *) (*s_objet_resultat).objet)).timeout_emission = + (*timeout_emission); } if (options[d_REUSE_ADDRESS] == 'Y') @@ -1059,6 +1090,9 @@ options_socket(struct_processus *s_etat_ d_ex_erreur_parametre_fichier; return(d_erreur); } + + (*((struct_socket *) (*s_objet_resultat).objet)).options |= + ((integer8) 1) << d_REUSE_ADDRESS; } return(d_absence_erreur); @@ -4841,6 +4875,7 @@ instruction_open(struct_processus *s_eta = 'Y'; (*((struct_socket *) (*s_objet_resultat).objet)).socket_connectee = d_faux; + (*((struct_socket *) (*s_objet_resultat).objet)).options = 0; if (type_domaine == 'L') { // Socket serveur