first commit
This commit is contained in:
193
vendor/github.com/ibm-messaging/mq-golang/ibmmq/mqiMQCNO.go
generated
vendored
Normal file
193
vendor/github.com/ibm-messaging/mq-golang/ibmmq/mqiMQCNO.go
generated
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
package ibmmq
|
||||
|
||||
/*
|
||||
Copyright (c) IBM Corporation 2016
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific
|
||||
|
||||
Contributors:
|
||||
Mark Taylor - Initial Contribution
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <cmqc.h>
|
||||
#include <cmqxc.h>
|
||||
|
||||
*/
|
||||
import "C"
|
||||
import "unsafe"
|
||||
|
||||
/*
|
||||
MQCNO is a structure containing the MQ Connection Options (MQCNO)
|
||||
Note that only a subset of the real structure is exposed in this
|
||||
version.
|
||||
*/
|
||||
type MQCNO struct {
|
||||
Version int32
|
||||
Options int32
|
||||
SecurityParms *MQCSP
|
||||
CCDTUrl string
|
||||
ClientConn *MQCD
|
||||
SSLConfig *MQSCO
|
||||
}
|
||||
|
||||
/*
|
||||
MQCSP is a structure containing the MQ Security Parameters (MQCSP)
|
||||
*/
|
||||
type MQCSP struct {
|
||||
AuthenticationType int32
|
||||
UserId string
|
||||
Password string
|
||||
}
|
||||
|
||||
/*
|
||||
NewMQCNO fills in default values for the MQCNO structure
|
||||
*/
|
||||
func NewMQCNO() *MQCNO {
|
||||
|
||||
cno := new(MQCNO)
|
||||
cno.Version = int32(C.MQCNO_VERSION_1)
|
||||
cno.Options = int32(C.MQCNO_NONE)
|
||||
cno.SecurityParms = nil
|
||||
cno.ClientConn = nil
|
||||
|
||||
return cno
|
||||
}
|
||||
|
||||
/*
|
||||
NewMQCSP fills in default values for the MQCSP structure
|
||||
*/
|
||||
func NewMQCSP() *MQCSP {
|
||||
|
||||
csp := new(MQCSP)
|
||||
csp.AuthenticationType = int32(C.MQCSP_AUTH_NONE)
|
||||
csp.UserId = ""
|
||||
csp.Password = ""
|
||||
|
||||
return csp
|
||||
}
|
||||
|
||||
func copyCNOtoC(mqcno *C.MQCNO, gocno *MQCNO) {
|
||||
var i int
|
||||
var mqcsp C.PMQCSP
|
||||
var mqcd C.PMQCD
|
||||
var mqsco C.PMQSCO
|
||||
|
||||
setMQIString((*C.char)(&mqcno.StrucId[0]), "CNO ", 4)
|
||||
mqcno.Version = C.MQLONG(gocno.Version)
|
||||
mqcno.Options = C.MQLONG(gocno.Options)
|
||||
|
||||
for i = 0; i < C.MQ_CONN_TAG_LENGTH; i++ {
|
||||
mqcno.ConnTag[i] = 0
|
||||
}
|
||||
for i = 0; i < C.MQ_CONNECTION_ID_LENGTH; i++ {
|
||||
mqcno.ConnectionId[i] = 0
|
||||
}
|
||||
|
||||
mqcno.ClientConnOffset = 0
|
||||
if gocno.ClientConn != nil {
|
||||
gocd := gocno.ClientConn
|
||||
mqcd = C.PMQCD(C.malloc(C.MQCD_LENGTH_11))
|
||||
copyCDtoC(mqcd, gocd)
|
||||
mqcno.ClientConnPtr = C.MQPTR(mqcd)
|
||||
if gocno.Version < 2 {
|
||||
mqcno.Version = C.MQCNO_VERSION_2
|
||||
}
|
||||
} else {
|
||||
mqcno.ClientConnPtr = nil
|
||||
}
|
||||
|
||||
mqcno.SSLConfigOffset = 0
|
||||
if gocno.SSLConfig != nil {
|
||||
gosco := gocno.SSLConfig
|
||||
mqsco = C.PMQSCO(C.malloc(C.MQSCO_LENGTH_5))
|
||||
copySCOtoC(mqsco, gosco)
|
||||
mqcno.SSLConfigPtr = C.PMQSCO(mqsco)
|
||||
if gocno.Version < 4 {
|
||||
mqcno.Version = C.MQCNO_VERSION_4
|
||||
}
|
||||
} else {
|
||||
mqcno.SSLConfigPtr = nil
|
||||
}
|
||||
|
||||
mqcno.SecurityParmsOffset = 0
|
||||
if gocno.SecurityParms != nil {
|
||||
gocsp := gocno.SecurityParms
|
||||
|
||||
mqcsp = C.PMQCSP(C.malloc(C.MQCSP_LENGTH_1))
|
||||
setMQIString((*C.char)(&mqcsp.StrucId[0]), "CSP ", 4)
|
||||
mqcsp.Version = C.MQCSP_VERSION_1
|
||||
mqcsp.AuthenticationType = C.MQLONG(gocsp.AuthenticationType)
|
||||
mqcsp.CSPUserIdOffset = 0
|
||||
mqcsp.CSPPasswordOffset = 0
|
||||
|
||||
if gocsp.UserId != "" {
|
||||
mqcsp.AuthenticationType = C.MQLONG(C.MQCSP_AUTH_USER_ID_AND_PWD)
|
||||
mqcsp.CSPUserIdPtr = C.MQPTR(unsafe.Pointer(C.CString(gocsp.UserId)))
|
||||
mqcsp.CSPUserIdLength = C.MQLONG(len(gocsp.UserId))
|
||||
}
|
||||
if gocsp.Password != "" {
|
||||
mqcsp.CSPPasswordPtr = C.MQPTR(unsafe.Pointer(C.CString(gocsp.Password)))
|
||||
mqcsp.CSPPasswordLength = C.MQLONG(len(gocsp.Password))
|
||||
}
|
||||
mqcno.SecurityParmsPtr = C.PMQCSP(mqcsp)
|
||||
if gocno.Version < 5 {
|
||||
mqcno.Version = C.MQCNO_VERSION_5
|
||||
}
|
||||
|
||||
} else {
|
||||
mqcno.SecurityParmsPtr = nil
|
||||
}
|
||||
|
||||
mqcno.CCDTUrlOffset = 0
|
||||
if len(gocno.CCDTUrl) != 0 {
|
||||
mqcno.CCDTUrlPtr = C.PMQCHAR(unsafe.Pointer(C.CString(gocno.CCDTUrl)))
|
||||
mqcno.CCDTUrlLength = C.MQLONG(len(gocno.CCDTUrl))
|
||||
} else {
|
||||
mqcno.CCDTUrlPtr = nil
|
||||
mqcno.CCDTUrlLength = 0
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func copyCNOfromC(mqcno *C.MQCNO, gocno *MQCNO) {
|
||||
|
||||
if mqcno.SecurityParmsPtr != nil {
|
||||
if mqcno.SecurityParmsPtr.CSPUserIdPtr != nil {
|
||||
C.free(unsafe.Pointer(mqcno.SecurityParmsPtr.CSPUserIdPtr))
|
||||
}
|
||||
// Set memory to 0 for area that held a password
|
||||
if mqcno.SecurityParmsPtr.CSPPasswordPtr != nil {
|
||||
C.memset((unsafe.Pointer)(mqcno.SecurityParmsPtr.CSPPasswordPtr), 0, C.size_t(mqcno.SecurityParmsPtr.CSPPasswordLength))
|
||||
C.free(unsafe.Pointer(mqcno.SecurityParmsPtr.CSPPasswordPtr))
|
||||
}
|
||||
C.free(unsafe.Pointer(mqcno.SecurityParmsPtr))
|
||||
}
|
||||
|
||||
if mqcno.ClientConnPtr != nil {
|
||||
copyCDfromC(C.PMQCD(mqcno.ClientConnPtr), gocno.ClientConn)
|
||||
C.free(unsafe.Pointer(mqcno.ClientConnPtr))
|
||||
}
|
||||
|
||||
if mqcno.SSLConfigPtr != nil {
|
||||
copySCOfromC(C.PMQSCO(mqcno.SSLConfigPtr), gocno.SSLConfig)
|
||||
C.free(unsafe.Pointer(mqcno.SSLConfigPtr))
|
||||
}
|
||||
|
||||
if mqcno.CCDTUrlPtr != nil {
|
||||
C.free(unsafe.Pointer(mqcno.CCDTUrlPtr))
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user