(krb5_make_addrport): create an address of type KRB5_ADDRESS_ADDRPORT
from (addr, port) git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6372 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 1999 Kungliga Tekniska H<>gskolan
|
* Copyright (c) 1997 - 1999 Kungliga Tekniska H<>gskolan
|
||||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -147,3 +147,53 @@ krb5_append_addresses(krb5_context context,
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create an address of type KRB5_ADDRESS_ADDRPORT from (addr, port)
|
||||||
|
*/
|
||||||
|
|
||||||
|
krb5_error_code
|
||||||
|
krb5_make_addrport (krb5_address **res, const krb5_address *addr, int16_t port)
|
||||||
|
{
|
||||||
|
krb5_error_code ret;
|
||||||
|
size_t len = addr->address.length + 2 + 4 * 4;
|
||||||
|
u_char *p;
|
||||||
|
|
||||||
|
*res = malloc (sizeof(**res));
|
||||||
|
if (*res == NULL)
|
||||||
|
return ENOMEM;
|
||||||
|
(*res)->addr_type = KRB5_ADDRESS_ADDRPORT;
|
||||||
|
ret = krb5_data_alloc (&(*res)->address, len);
|
||||||
|
if (ret) {
|
||||||
|
free (*res);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
p = (*res)->address.data;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = (addr->addr_type ) & 0xFF;
|
||||||
|
*p++ = (addr->addr_type >> 8) & 0xFF;
|
||||||
|
|
||||||
|
*p++ = (addr->address.length ) & 0xFF;
|
||||||
|
*p++ = (addr->address.length >> 8) & 0xFF;
|
||||||
|
*p++ = (addr->address.length >> 16) & 0xFF;
|
||||||
|
*p++ = (addr->address.length >> 24) & 0xFF;
|
||||||
|
|
||||||
|
memcpy (p, addr->address.data, addr->address.length);
|
||||||
|
p += addr->address.length;
|
||||||
|
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = (KRB5_ADDRESS_IPPORT ) & 0xFF;
|
||||||
|
*p++ = (KRB5_ADDRESS_IPPORT >> 8) & 0xFF;
|
||||||
|
|
||||||
|
*p++ = (2 ) & 0xFF;
|
||||||
|
*p++ = (2 >> 8) & 0xFF;
|
||||||
|
*p++ = (2 >> 16) & 0xFF;
|
||||||
|
*p++ = (2 >> 24) & 0xFF;
|
||||||
|
|
||||||
|
memcpy (p, &port, 2);
|
||||||
|
p += 2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user