Partager via


MC_ALLOCATE

Le verbe MC_ALLOCATE est émis par le programme de transaction d’appel (TP). Il alloue une session entre l’unité logique locale (LU) et l’unité lu partenaire et (conjointement avec RECEIVE_ALLOCATE) établit une conversation entre le TP appelant et le TP appelé. Une fois ce verbe exécuté avec succès, APPC génère un identificateur de conversation (conv_id). Le conv_id est un paramètre obligatoire pour tous les autres verbes de conversation APPC.

La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe MC_ALLOCATE .

Syntaxe

  
struct mc_allocate {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv2;  
    unsigned short   primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    reserv3;  
    unsigned char    synclevel;  
    unsigned char    reserv4[2];  
    unsigned char    rtn_ctl;  
    unsigned char    reserv5;  
    unsigned long    conv_group_id;  
    unsigned long    sense_data;  
    unsigned char    plu_alias[8];  
    unsigned char    mode_name[8];  
    unsigned char    tp_name[64];  
    unsigned char    security;  
    unsigned char    reserv6[11];  
    unsigned char    pwd[10];  
    unsigned char    user_id[10];  
    unsigned short   pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char    reserv7;  
    unsigned char    fqplu_name[17];  
    unsigned char    reserv8[8];  
    unsigned long    proxy_user;  
    unsigned long    proxy_domain;  
    unsigned char    reserv9[16];  
};   

Membres

opcode
Paramètre fourni. Spécifie le code de l’opération de verbe ; AP_M_ALLOCATE.

opext
Paramètre fourni. Spécifie l’extension d’opération de verbe, AP_MAPPED_CONVERSATION. Si le bit AP_EXTD_VCB est défini, cela indique qu’une version étendue du bloc de contrôle verbe est utilisée. Dans ce cas, la structure MC_ALLOCATE inclut la prise en charge des points de synchronisation ou la prise en charge des fonctionnalités de proxy privilégiés.

reserv2
Champ réservé.

primary_rc
Paramètre retourné. Spécifie le code de retour principal défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.

secondary_rc
Paramètre retourné. Spécifie le code de retour secondaire défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.

tp_id
Paramètre fourni. Identifie le TP local. La valeur de ce paramètre a été retournée par TP_STARTED.

conv_id
Paramètre retourné. Identifie la conversation établie entre les deux fournisseurs de services.

reserv3
Un champ réservé.

niveau de synchronisation
Paramètre fourni. Spécifie le niveau de synchronisation de la conversation. Il détermine si les fournisseurs de services peuvent demander une confirmation de réception des données et confirmer la réception des données.

  • AP_NONE spécifie que le traitement de confirmation ne sera pas utilisé dans cette conversation.

  • AP_CONFIRM_SYNC_LEVEL spécifie que les fournisseurs de services peuvent utiliser le traitement de confirmation dans cette conversation.

  • AP_SYNCPT spécifie que les fournisseurs de services peuvent utiliser le traitement de confirmation de niveau de synchronisation 2 dans cette conversation.

    reserv4
    Un champ réservé.

    reserv5
    Un champ réservé.

    rtn_ctl
    Paramètre fourni. Spécifie quand l’unité lu locale, agissant sur une demande de session du TP local, doit retourner le contrôle au TP local. Pour plus d’informations sur les sessions, consultez Vue d’ensemble des programmes de transaction.

  • AP_IMMEDIATE spécifie que la lu alloue une session de contention-gagnant, si celle-ci est immédiatement disponible, et retourne le contrôle au TP.

  • AP_WHEN_SESSION_ALLOCATED spécifie que l’unité lu ne retourne pas le contrôle au TP tant qu’elle n’a pas alloué une session ou rencontré l’une des erreurs documentées dans codes de retour de cette rubrique. (Si la limite de session est égale à zéro, l’unité lu retourne immédiatement le contrôle.) Si une session n’est pas disponible, le TP en attend une.

  • AP_WHEN_SESSION_FREE spécifie que la lu alloue une session de contention-winner ou de contention-loser, si une session est disponible ou peut être activée, et retourne le contrôle au TP. Si une erreur se produit (comme indiqué dans codes de retour dans cette rubrique), l’appel retourne immédiatement avec l’erreur dans les champs primary_rc et secondary_rc .

  • AP_WHEN_CONWINNER_ALLOC spécifie que l’unité lu ne retourne pas le contrôle tant qu’elle n’a pas alloué une session gagnante ou rencontré l’une des erreurs documentées dans codes de retour de cette rubrique. (Si la limite de session est égale à zéro, l’unité lu retourne immédiatement le contrôle.) Si une session n’est pas disponible, le TP en attend une.

  • AP_WHEN_CONV_GROUP_ALLOC spécifie que la lu ne retourne pas le contrôle au TP tant qu’elle n’alloue pas la session spécifiée par conv_group_id ou qu’ellerencontre l’une des erreurs documentées dans codes de retour de cette rubrique. Si une session n’est pas disponible, le TP attend qu’elle devienne gratuite.

Notes

AP_IMMEDIATE est la seule valeur pour rtn_ctl qui n’entraîne jamais le démarrage d’une nouvelle session. Pour les valeurs autres que AP_IMMEDIATE, si une session appropriée n’est pas immédiatement disponible, Microsoft® Host Integration Server tente d’en démarrer une. Cela entraîne l’activation de la connexion à la demande.

conv_group_id
Paramètre fourni/retourné. Spécifie l’identificateur du groupe de conversations à partir duquel la session doit être allouée. Le conv_group_id n’est requis que si rtn_ctlest défini sur WHEN_CONV_GROUP_ALLOC. Quandrtn_ctl spécifie une valeur différente et que le primary_rc est AP_OK, il s’agit d’une valeur retournée.

sense_data
Paramètre retourné. Indique une erreur d’allocation (nouvelle tentative ou absence de nouvelle tentative) et contient des données de sens.

plu_alias
Paramètre fourni. Spécifie l’alias par lequel l’unité lu partenaire est connue du TP local.

Le plu_alias doit correspondre au nom d’une lu partenaire établie lors de la configuration.

Le paramètre est une chaîne de caractères ASCII de 8 octets. Il peut contenir les caractères ASCII suivants :

  • Lettres majuscules

  • Nombres 0 à 9

  • Espaces

  • Caractères spéciaux $, #, %, et @

    Le premier caractère de cette chaîne ne peut pas être un espace.

    Si la valeur de ce paramètre est inférieure à huit octets, placez-le à droite avec des espaces ASCII (0x20).

    Si vous souhaitez spécifier l’unité lu partenaire avec le paramètre fqplu_name , remplissez ce paramètre avec des zéros binaires.

    Pour un utilisateur ou un groupe utilisant des TPs, des émulateurs 5250 et/ou des applications APPC, l’administrateur système peut affecter des unités de référence locales et distantes par défaut. Dans ce cas, le champ est laissé vide ou null et les unités de référence par défaut sont accessibles lorsque l’utilisateur ou le membre du groupe démarre un programme APPC.

    mode_name
    Paramètre fourni. Spécifie le nom d’un ensemble de caractéristiques réseau définies lors de la configuration.

    La valeur de mode_name doit correspondre au nom d’un mode associé à l’unité lu partenaire pendant la configuration.

    Le paramètre est une chaîne de caractères EBCDIC de 8 octets. Il peut se composer de caractères du jeu de caractères EBCDIC de type A :

  • Lettres majuscules

  • Nombres 0 à 9

  • Caractères spéciaux $, #et @

    Le premier caractère de la chaîne doit être une lettre majuscule ou un caractère spécial.

    N’utilisez pas SNASVCMG dans une conversation mappée. SNASVCMG est un mode_name réservé utilisé en interne par APPC.

    tp_name
    Paramètre fourni. Spécifie le nom du TP appelé. La valeur de tp_name spécifiée par MC_ALLOCATE dans le TP appelant doit correspondre à la valeur de tp_name spécifiée par RECEIVE_ALLOCATE dans le TP appelé.

    Le paramètre est une chaîne de caractères EBCDIC de 64 octets qui respecte la casse. Le paramètre tp_name peut se composer des caractères EBCDIC suivants :

  • Lettres majuscules et minuscules

  • Chiffres 0 à 9

  • Caractères spéciaux $, #, @ et point (.)

    Si tp_name est inférieur à 64 octets, utilisez des espaces EBCDIC (0x40) pour le placer sur la droite.

    La convention SNA est que le nom d’un tp de service peut comporter jusqu’à quatre caractères. Le premier caractère est un octet hexadécimal compris entre 0x00 et 0x3F. Les autres caractères proviennent du jeu de caractères EBCDIC de type AE.

    security
    Paramètre fourni. Fournit les informations dont l’unité logique partenaire a besoin pour valider l’accès au TP appelé. Consultez la section Valeurs possibles pour le paramètre Sécurité dans cette rubrique.

    Réserve6
    Champ réservé.

    pwd
    Paramètre fourni. Spécifie le mot de passe associé à user_id.

    Le paramètre pwd est requis uniquement si la sécurité est définie sur AP_PGM ou AP_SAME. Il doit correspondre au mot de passe de user_id qui a été établi lors de la configuration.

    Le paramètre pwd est une chaîne de caractères EBCDIC de 10 octets qui respecte la casse. Il peut se composer des caractères EBCDIC suivants :

  • Lettres majuscules et minuscules

  • Chiffres 0 à 9

  • Caractères spéciaux $, #, @ et point (.)

    Si le mot de passe est inférieur à 10 octets, utilisez des espaces EBCDIC (0x40) pour le placer sur la droite.

    Si la fonctionnalité d’ouverture de session automatique APPC doit être utilisée, la chaîne de caractères pwd doit être codée en dur sur MS$SAME. Pour plus d'informations, consultez la section Notes.

    User_id
    Paramètre fourni. Spécifie l’identificateur d’utilisateur requis pour accéder au tp partenaire. Elle est requise uniquement si le paramètre de sécurité est défini sur AP_PGM ou AP_SAME.

    Le paramètre user_id est une chaîne de caractères EBCDIC de 10 octets qui respecte la casse. Il doit correspondre à l’un des identificateurs d’utilisateur configurés pour le tp partenaire.

    Le paramètre peut se composer des caractères EBCDIC suivants :

  • Lettres majuscules et minuscules

  • Chiffres 0 à 9

  • Caractères spéciaux $, #, @ et point (.)

    Si user_id est inférieur à 10 octets, utilisez des espaces EBCDIC (0x40) pour le placer sur la droite.

    Si la fonctionnalité d’ouverture de session automatique APPC doit être utilisée, la chaîne de caractères user_id doit être codée en dur en MS$SAME. Pour plus d'informations, consultez la section Notes.

    pip_dlen
    Paramètre fourni. Spécifie la longueur des paramètres d’initialisation de programme (PIP) à passer au tp partenaire. La plage est comprise entre 0 et 32767.

    pip_dptr
    Paramètre fourni. Spécifie l’adresse de la mémoire tampon contenant des données PIP. Utilisez ce paramètre uniquement si pip_dlen est supérieur à zéro.

    Les données PIP peuvent être constituées de paramètres d’initialisation ou d’informations de configuration environnementales requises par un tp partenaire ou un système d’exploitation distant. Les données PIP doivent suivre le format de flux de données général (GDS). Pour plus d’informations, consultez votre ou vos manuels IBM SNA.

    Pour Microsoft Windows, la mémoire tampon de données peut résider dans une zone de données statique ou dans une zone allouée globalement. La mémoire tampon de données doit tenir entièrement dans cette zone.

    reserv7
    Un champ réservé.

    fqplu_name
    Paramètre fourni. Spécifie le nom complet de l’unité logique partenaire. Cela doit correspondre au nom complet de l’unité logique locale définie dans le nœud distant. Le paramètre se compose de deux chaînes de caractères EBCDIC de type A pour le NETID et le nom lu de l’unité logique partenaire. Les noms sont séparés par un point EBCDIC (.).

    Ce nom doit être fourni si aucune plu_alias n’est spécifiée. Il peut se composer des caractères EBCDIC suivants :

  • 18 Lettres majuscules

  • Chiffres 0 à 9

  • Caractères spéciaux $, #, et @

    Si la valeur de ce paramètre est inférieure à 17 octets, placez-la sur la droite avec des espaces EBCDIC (0x40).

    reserv8
    Un champ réservé.

    proxy_user
    Paramètre fourni. Spécifie une LPWSTR pointant vers une chaîne Unicode contenant le nom d’utilisateur à emprunter à l’aide de la fonctionnalité de proxy privilégié. Ce champ ne peut être utilisé que lorsque le bit AP_EXTD_VCB est défini sur le champ opext , ce qui indique un VCB étendu.

    proxy_domain
    Paramètre fourni. Spécifie une LPWSTR pointant vers une chaîne Unicode contenant le nom de domaine de l’utilisateur à emprunter à l’aide de la fonctionnalité de proxy privilégié. Ce champ ne peut être utilisé que lorsque le bit AP_EXTD_VCB est défini sur le champ opext , ce qui indique un VCB étendu.

    reserv9
    Un champ réservé.

Valeurs possibles pour le paramètre de sécurité

En fonction de la sécurité de conversation établie pour le TP appelé pendant la configuration, utilisez l’une des valeurs suivantes :

  • AP_NONE pour un tp appelé qui n’utilise aucune sécurité de conversation.

  • AP_PGM pour un tp appelé qui utilise la sécurité de conversation et nécessite donc un identificateur d’utilisateur et un mot de passe. Fournissez ces informations via les paramètres user_id et pwd .

  • AP_PROXY_PGM pour un TP appelé avec un proxy privilégié qui utilise la sécurité de conversation et nécessite donc un identificateur d’utilisateur et un mot de passe. Les pointeurs doivent être configurés pour proxy_user et proxy_domain pointer vers des chaînes Unicode contenant le nom d’utilisateur et le nom de domaine de l’utilisateur à emprunter. L’application n’a pas besoin de définir les champs user_id et pwd .

  • AP_PROXY_SAME pour un tp qui a été appelé à l’aide d’un proxy privilégié avec un identificateur d’utilisateur et un mot de passe valides fournis par le proxy, qui appelle à son tour un autre TP. Les pointeurs doivent être configurés pour proxy_user et proxy_domain pointer vers des chaînes Unicode contenant le nom d’utilisateur et le nom de domaine de l’utilisateur à emprunter. L’application n’a pas besoin de définir les champs user_id et pwd .

    Par exemple, supposons que TP A appelle TP B avec un identificateur d’utilisateur et un mot de passe valides fournis par le proxy privilégié, et que TP B appelle à son tour TP C. Si TP B spécifie la valeur AP_PROXY_SAME, APPC envoie à l’unité logique pour TP C l’identificateur utilisateur de TP A et un indicateur déjà vérifié. Cet indicateur indique à TP C de ne pas exiger le mot de passe (si TP C est configuré pour accepter un indicateur déjà vérifié).

  • AP_PROXY_STRONG pour un tp appelé avec proxy privilégié qui utilise la sécurité de conversation et nécessite donc un identificateur d’utilisateur et un mot de passe fournis par le mécanisme de proxy privilégié. Les pointeurs doivent être configurés pour que proxy_user et proxy_domain pointent vers des chaînes Unicode contenant le nom d’utilisateur et le nom de domaine de l’utilisateur à emprunter l’identité. L’application n’a pas besoin de définir les champs user_id et pwd . AP_PROXY_STRONG diffère de AP_PROXY_PGM en ce que AP_PROXY_STRONG n’autorise pas les mots de passe en texte clair. Si le système distant ne prend pas en charge les mots de passe chiffrés (sécurité de conversation forte), cet appel échoue.

  • AP_SAME pour un TP qui a été appelé avec un identificateur d’utilisateur et un mot de passe valides, qui à son tour appelle un autre TP.

    Par exemple, supposons que TP A appelle TP B avec un identificateur d’utilisateur et un mot de passe valides, et que TP B appelle à son tour TP C. Si TP B spécifie la valeur AP_SAME, APPC envoie à la LU pour TP C l’identificateur utilisateur à partir de TP A et un indicateur déjà vérifié. Cet indicateur indique à TP C de ne pas exiger le mot de passe (si TP C est configuré pour accepter un indicateur déjà vérifié).

    Lorsque AP_SAME est utilisé dans un verbe MC_ALLOCATE , votre application doit toujours fournir des valeurs pour les paramètres user_id et pwd dans le bloc de contrôle verbe. Selon les propriétés négociées entre Host Integration Server et la lu homologue, le verbe MC_ALLOCATE envoie l’un des trois types de messages Attach (FMH-5), dans cet ordre de priorité :

    1. Si les LU ont négocié la sécurité « déjà vérifiée », l’attachement envoyé par Host Integration Server n’inclut pas le contenu du champ de paramètre pwd spécifié dans le VCB.

    2. Si les LU ont négocié la sécurité de la « vérification permanente », l’attachement envoyé par Host Integration Server inclut le paramètre pwd spécifié dans le VCB, mais uniquement lorsque l’attachement est le premier pour le paramètre user_id spécifié depuis le début de la session LU-LU et omet le paramètre pwd sur toutes les attaches suivantes (émises par votre application ou toute autre application utilisant ce triplet lu-LU-mode).

    3. Si les LU n’ont pas négocié l’un des éléments ci-dessus, l’attachement envoyé par Host Integration Server omet à la fois les paramètres user_id et pwd sur toutes les attaches.

      Votre application ne peut pas dire quel mode de sécurité a été négocié entre les unités de gestion, ni si le verbe MC_ALLOCATE qu’elle émet est le premier pour ce triplet lu-LU-mode. Par conséquent, votre application doit toujours définir les champs de paramètres user_id et pwd dans le VCB lorsque la sécurité est définie sur AP_SAME.

      Pour plus d’informations sur la vérification persistante et la sécurité déjà vérifiée, consultez le Guide des formats SNA, section « Fm Header 5 : Attach (LU 6.2) ».

  • AP_STRONG pour un TP appelé qui utilise la sécurité de conversation et nécessite donc un identificateur d’utilisateur et un mot de passe. Fournissez ces informations via les paramètres user_id et pwd . AP_STRONG diffère de AP_PGM en ce que AP_STRONG n’autorise pas les mots de passe en texte clair. Si le système distant ne prend pas en charge les mots de passe chiffrés (sécurité de conversation forte), cet appel échoue.

    Si la fonctionnalité d’ouverture de session automatique APPC doit être utilisée, la sécurité doit être définie sur AP_PGM. Pour plus d'informations, consultez la section Notes.

Codes de retour

AP_OK
Code de retour principal ; indique que le verbe s’est exécuté correctement.

AP_UNSUCCESSFUL
Code de retour principal ; le paramètre fourni rtn_ctl spécifié le retour immédiat (AP_IMMEDIATE) du contrôle au TP, et la lu locale n’avait pas de session de contention-gagnant disponible.

AP_PARAMETER_CHECK
Code de retour principal ; le verbe n’a pas été exécuté en raison d’une erreur de paramètre.

AP_BAD_RETURN_CONTROL

Code de retour secondaire ; la valeur spécifiée pour rtn_ctl n’était pas valide.

AP_BAD_SECURITY

Code de retour secondaire ; la valeur spécifiée pour la sécurité n’était pas valide.

AP_BAD_SYNC_LEVEL

Code de retour secondaire ; la valeur spécifiée pour sync_level n’était pas valide.

AP_BAD_TP_ID

Code de retour secondaire ; la valeur spécifiée pour tp_id n’était pas valide.

AP_PIP_LEN_INCORRECT

Code de retour secondaire ; la valeur de pip_dlen était supérieure à 32767.

AP_UNKNOWN_PARTNER_MODE

Code de retour secondaire ; la valeur spécifiée pour mode_name n’était pas valide.

AP_BAD_PARTNER_LU_ALIAS

Code de retour secondaire ; APPC n’a pas reconnu le partner_lu_alias fourni.

AP_NO_USE_OF_SNASVCMG

Code de retour secondaire ; SNASVCMG n’est pas une valeur valide pour mode_name.

AP_INVALID_DATA_SEGMENT

Code de retour secondaire ; les données PIP étaient plus longues que le segment de données alloué, ou l’adresse de la mémoire tampon de données PIP était incorrecte.

AP_ALLOCATION_ERROR
Code de retour principal ; APPC n’a pas pu allouer une conversation. L’état de la conversation est défini sur RESET.

Ce code peut être retourné par le biais d’un verbe émis après MC_ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Code de retour secondaire ; la conversation ne peut pas être allouée en raison d’une condition permanente, telle qu’une erreur de configuration ou une erreur de protocole de session. Pour déterminer l’erreur, l’administrateur système doit examiner le fichier journal des erreurs. Ne réessayez pas l’allocation tant que l’erreur n’a pas été corrigée.

AP_ALLOCATION_FAILURE_RETRY

Code de retour secondaire ; la conversation n’a pas pu être allouée en raison d’une condition temporaire, telle qu’un échec de liaison. La raison de l’échec est consignée dans le journal des erreurs système. Réessayez l’allocation.

AP_COMM_SUBSYSTEM_ABENDED
Code de retour principal ; indique l’une des situations suivantes :

  • Le nœud utilisé par cette conversation a rencontré un abandon (ABEND).

  • La connexion a été interrompue entre le programme transactionnel et le nœud PU 2.1 (erreur LAN).

  • Le processus SnaBase qui se déroule sur l’ordinateur du programme transactionnel a rencontré un abandon (ABEND).

    L’administrateur système doit examiner le journal des erreurs pour déterminer la raison de l’abandon.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Code de retour principal ; indique qu’il n’a pas été possible de charger un composant requis ou d’y mettre fin lors du traitement du verbe. Par conséquent, la communication n’a pas pu être établie. Contactez l’administrateur système pour mettre en place une action corrective.

    Lorsque ce code de retour est utilisé avec MC_ALLOCATE, cela peut indiquer qu’aucun système de communication n’est trouvé pour prendre en charge la lu locale. (Par exemple, l’alias lu local spécifié avec TP_STARTED est incorrect ou n’a pas été configuré.) Notez que si lu_alias ou mode_name contient moins de huit caractères, vous devez vous assurer que ces champs sont remplis d’espaces à droite. Cette erreur est retournée si ces paramètres ne sont pas remplis d’espaces, car aucun nœud n’est disponible pour répondre à la demande MC_ALLOCATE .

    Lorsque MC_ALLOCATE produit ce code de retour pour un système Host Integration Server configuré avec plusieurs nœuds, il existe deux codes de retour secondaires comme suit :

    0xF0000001

    Code de retour secondaire ; aucun nœud n’a été démarré.

    0xF0000002

    Code de retour secondaire ; au moins un nœud a été démarré, mais la lu locale (quand TP_STARTED est émis) n’est configurée sur aucun nœud actif. Le problème peut être l’un des suivants :

  • Le nœud avec l’unité lu locale n’est pas démarré.

  • La lu locale n’est pas configurée.

    AP_INVALID_VERB_SEGMENT
    Code de retour principal ; indique que le bloc de contrôle de verbe s’étend au-delà de la fin du segment de données.

    AP_STACK_TOO_SMALL
    Code de retour principal ; indique que la taille de la pile de l’application est trop petite pour exécuter le verbe. Augmentez la taille de pile de votre application.

    AP_CONV_BUSY
    Code de retour principal ; il ne peut y avoir qu’un seul verbe de conversation à la fois sur n’importe quelle conversation. Cela peut se produire si le TP local a plusieurs threads et que plusieurs threads émettent des appels APPC à l’aide du même conv_id.

    AP_THREAD_BLOCKING
    Code de retour principal ; indique que le thread appelant se trouve déjà dans un appel de blocage.

    AP_UNEXPECTED_DOS_ERROR
    Code de retour principal ; indique que le système d’exploitation a retourné une erreur à APPC lors du traitement d’un appel APPC à partir du programme transactionnel local. Le code de retour du système d’exploitation a été retourné via secondary_rc. Il apparaît dans l’ordre Intel avec permutation d’octets. Si le problème persiste, consultez l’administrateur système.

Notes

MC_ALLOCATE établit une conversation mappée.

L’état de la conversation est RESET lorsque le TP émet ce verbe. Une fois l’exécution réussie (primary_rc est AP_OK), l’état devient SEND. Si le verbe ne s’exécute pas, l’état reste inchangé.

Plusieurs paramètres de MC_ALLOCATE sont des chaînes EBCDIC ou ASCII. Un TP peut utiliser la conversion CSV pour traduire une chaîne d’un jeu de caractères à l’autre.

Pour envoyer immédiatement la demande de MC_ALLOCATE , le TP appelant peut émettre MC_FLUSH ou MC_CONFIRM immédiatement après MC_ALLOCATE. Sinon, la requête MC_ALLOCATE s’accumule avec d’autres données dans la mémoire tampon d’envoi de la lu locale jusqu’à ce que la mémoire tampon soit pleine.

En émettant MC_CONFIRM après MC_ALLOCATE, le TP appelant peut déterminer immédiatement si l’allocation a réussi (si le niveau de synchronisation est défini sur AP_CONFIRM_SYNC_LEVEL).

Normalement, la valeur du paramètre mode_name du verbe MC_ALLOCATE doit correspondre au nom d’un mode configuré pour le nœud du TP appelé et associé pendant la configuration à l’unité lu partenaire.

Si l’un des modes associés à l’unité lu partenaire sur le nœud du TP appelé est un mode implicite, la session établie entre les deux unités de gestion sera du mode implicite lorsqu’aucun nom de mode associé à l’unité lu partenaire ne correspond à la valeur de mode_name.

Host Integration Server prend en charge une fonctionnalité appelée substitution de mot de passe. Il s’agit d’une fonctionnalité de sécurité prise en charge par la dernière version du système d’exploitation IBM i (V3R1) qui chiffre tout mot de passe qui circule entre deux nœuds sur un message Attach. Un mot de passe circule sur une attache chaque fois qu’une personne appelle un programme de transaction APPC spécifiant un identificateur d’utilisateur et un mot de passe. Par exemple, cela se produit chaque fois que quelqu’un se connecte à un IBM i.

La prise en charge de la substitution de mot de passe est indiquée en définissant le bit 5 dans l’octet 23 de la demande BIND sur 1 (ce qui indique que la substitution de mot de passe est prise en charge). Si le système distant définit ce bit dans la réponse BIND, Host Integration Server chiffre automatiquement le mot de passe de sécurité de conversation LU 6.2 inclus dans le message d’attachement FMH-5. Les applications APPC host Integration Server tirent automatiquement parti de cette fonctionnalité en définissant le champ de sécurité du VCB sur AP_PGM ou AP_STRONG dans la demande de MC_ALLOCATE .

Si une application APPC souhaite forcer le flux d’un mot de passe chiffré, l’application peut spécifier AP_STRONG pour le champ de sécurité dans le VCB dans la demande de MC_ALLOCATE . Cette option est implémentée comme défini dans IBM i V3R1 et est documentée dans la référence du programmeur IBM i CPI-C sous la forme CM_SECURITY_PROGRAM_STRONG, où le champ LU 6.2 pwd (mot de passe) est chiffré avant qu’il ne circule sur le réseau physique.

La fonctionnalité de substitution de mot de passe est actuellement uniquement prise en charge par IBM i V3R1 ou version ultérieure. Si le système distant ne prend pas en charge cette fonctionnalité, Host Integration Server unbind la session avec le code sens de 10060006. Les deux nœuds négocient s’ils prennent ou non en charge cette fonctionnalité dans l’échange BIND. Host Integration Server définit un bit dans le bind et ajoute également des données aléatoires sur le BIND pour le chiffrement. Si le nœud distant prend en charge la substitution de mot de passe, il définit le même bit dans la réponse BIND et ajoute des données aléatoires (différentes) pour le déchiffrement.

Host Integration Server prend en charge l’ouverture de session automatique pour les applications APPC. Cette fonctionnalité nécessite une configuration spécifique de la part de l’administrateur réseau : l’application APPC doit être appelée côté RÉSEAU à partir d’un client de Host Integration Server. Le client doit être connecté à un domaine Windows, mais il peut s’agir de n’importe quelle plateforme prenant en charge les API APPC host Integration Server.

L’application cliente est codée pour utiliser la sécurité au niveau « programme », avec un nom d’utilisateur APPC codé en dur spécial MS$SAME et un mot de passe MS$SAME. Lorsque cette allocation de session passe du client à Host Integration Server, le serveur Host Integration Server recherche le compte hôte et le mot de passe correspondant au compte Windows sous lequel le client est connecté et remplace les informations du compte hôte dans le message d’attachement APPC qu’il envoie à l’hôte.

Notes

Il est interdit au nœud distant de définir le bit spécifiant la substitution de mot de passe et de ne pas ajouter les données aléatoires.

Selon IBM, il existe des implémentations de la substitution de mot de passe LU 6.2 qui ne prennent pas en charge la substitution de mot de passe, mais qui renvoient le bit de substitution de mot de passe à Host Integration Server, sans spécifier de données aléatoires. Dans ce cas, Host Integration Server unbind la session avec le code sense 10060006.Ce code de sens est interprété comme suit :

  • 1006 = Champ ou paramètre obligatoire manquant.

  • 0006 = Un sous-champ obligatoire d’un vecteur de contrôle a été omis.

    Host Integration Server doit également consigner un événement 17 (échec d’activation de session APPC : réponse négative BIND envoyée).

    La solution correcte consiste à corriger l’échec de l’implémentation. Toutefois, comme solution de contournement à court terme, le paramètre de Registre SNA Host Integration Server suivant peut être défini : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB : REG_SZ : OUI

    Lorsque ce paramètre est spécifié dans le Registre, la prise en charge de la substitution de mot de passe Host Integration Server est désactivée.

    Plusieurs mises à jour ont été apportées à Host Integration Server pour permettre à une application APPC privilégiée d’ouvrir une conversation APPC à l’aide de la fonctionnalité de Sign-On unique pour le compte d’un utilisateur Windows défini. Il s’agit de la fonctionnalité de proxy privilégié. Une extension a été ajoutée au verbe APPC MC_ALLOCATE pour appeler cette fonctionnalité.

    Une application APPC devient privilégiée en étant démarrée dans un compte d’utilisateur Windows membre d’un groupe Windows spécial. Lorsqu’un domaine de sécurité hôte est configuré, SNA Manager définit un deuxième groupe Windows à utiliser avec les fonctionnalités de sécurité de l’hôte de Host Integration Server. Si le compte d’utilisateur sous lequel le client est en cours d’exécution est membre de ce deuxième groupe Windows, le client est privilégié pour lancer une conversation APPC au nom de tout compte d’utilisateur défini dans le cache du compte hôte.

    L’exemple suivant illustre le fonctionnement de la fonctionnalité de proxy privilégié :

    L’administrateur du serveur d’intégration hôte crée un domaine de sécurité de l’hôte appelé APP. SNA Manager crée désormais deux groupes Windows. Le premier groupe est appelé APP et le second est appelé APP_PROXY pour cet exemple. Les utilisateurs affectés au groupe d’applications sont activés pour l’authentification unique. Les utilisateurs affectés au groupe APP_PROXY sont des proxys privilégiés. L’administrateur ajoute l’utilisateur Windows AppcUser au groupe APP_PROXY à l’aide du bouton Utilisateurs de la boîte de dialogue de la propriété Domaine de sécurité de l’hôte dans le Gestionnaire SNA.

    L’administrateur configure ensuite une application APPC sur le serveur Host Integration Server pour qu’elle s’exécute en tant que service Windows appelé APPCAPP, et ce service a été configuré pour fonctionner sous le compte d’utilisateur AppcUser. Quand APPCAPP s’exécute, il ouvre une session APPC via un verbe ALLOCATE au format VCB étendu et spécifie le nom d’utilisateur Windows de l’utilisateur souhaité, UserA (par exemple).

    Le service SNA voit la demande de session provenir d’une connexion qui est membre de l’APPLICATION domaine de sécurité hôte. L’interface client/serveur indique au service SNA que le client réel est AppcUser.

    Le service SNA vérifie si AppcUser est membre du groupe APP_PROXY. Étant donné qu’AppcUser est membre de APP_PROXY, le service SNA insère le nom d’utilisateur/mot de passe pour UserA dans la commande APPC Attach (FMH-5) et l’envoie au tp partenaire.

    Pour prendre en charge la fonctionnalité de proxy privilégié, l’application APPC doit implémenter la logique de programme suivante :

    L’application APPC doit déterminer l’ID d’utilisateur Windows et le nom de domaine qu’elle souhaite emprunter l’identité.

    L’application APPC doit définir les paramètres suivants avant d’appeler le verbe MC_ALLOCATE :

    Activez l’utilisation de la structure de bloc de contrôle de verbe étendue MC_ALLOCATE en définissant l’indicateur AP_EXTD_VCB dans le champ opext .

    Définissez sécurité sur AP_PROXY_SAME, AP_PROXY_PGM ou AP_PROXY_STRONG.

    Configurez les pointeurs pour proxy_user et proxy_domain afin de pointer vers des chaînes Unicode contenant le nom d’utilisateur et le nom de domaine de l’utilisateur à emprunter l’identité.

Notes

L’application n’a pas besoin de configurer les champs user_id et pwd dans le MC_ALLOCATE VCB.

Lorsque l’application APPC effectue les étapes ci-dessus et émet le verbe MC_ALLOCATE , le serveur Host Integration Server effectue une recherche dans le domaine de sécurité de l’hôte pour l’utilisateur Windows spécifié et définit les champs ID utilisateur et mot de passe dans le message d’attachement FMH-5 envoyé au système distant.