(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:
Assar Westerlund
1999-06-24 17:10:42 +00:00
parent 70fe4312c6
commit f7ad9e28eb

View File

@@ -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).
* All rights reserved.
*
@@ -147,3 +147,53 @@ krb5_append_addresses(krb5_context context,
}
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;
}