Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source4/lib/socket/socket.c

    r414 r745  
    2525#include "system/network.h"
    2626#include "param/param.h"
     27#include "../lib/tsocket/tsocket.h"
     28#include "lib/util/util_net.h"
    2729
    2830/*
     
    343345
    344346        return sock->ops->fn_get_my_addr(sock, mem_ctx);
     347}
     348
     349_PUBLIC_ struct tsocket_address *socket_address_to_tsocket_address(TALLOC_CTX *mem_ctx,
     350                                                                   const struct socket_address *a)
     351{
     352        struct tsocket_address *r;
     353        int ret;
     354
     355        if (a->sockaddr) {
     356                ret = tsocket_address_bsd_from_sockaddr(mem_ctx,
     357                                                        a->sockaddr,
     358                                                        a->sockaddrlen,
     359                                                        &r);
     360        } else {
     361                ret = tsocket_address_inet_from_strings(mem_ctx,
     362                                                        a->family,
     363                                                        a->addr,
     364                                                        a->port,
     365                                                        &r);
     366        }
     367
     368        if (ret != 0) {
     369                return NULL;
     370        }
     371
     372        return r;
     373}
     374
     375_PUBLIC_ void socket_address_set_port(struct socket_address *a,
     376                                      uint16_t port)
     377{
     378        if (a->sockaddr) {
     379                set_sockaddr_port(a->sockaddr, port);
     380        } else {
     381                a->port = port;
     382        }
     383
     384}
     385
     386_PUBLIC_ struct socket_address *tsocket_address_to_socket_address(TALLOC_CTX *mem_ctx,
     387                                                                  const struct tsocket_address *a)
     388{
     389        ssize_t ret;
     390        struct sockaddr_storage ss;
     391        size_t sslen = sizeof(ss);
     392
     393        ret = tsocket_address_bsd_sockaddr(a, (struct sockaddr *)(void *)&ss, sslen);
     394        if (ret < 0) {
     395                return NULL;
     396        }
     397
     398        return socket_address_from_sockaddr(mem_ctx, (struct sockaddr *)(void *)&ss, ret);
     399}
     400
     401_PUBLIC_ struct tsocket_address *socket_get_remote_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx)
     402{
     403        struct socket_address *a;
     404        struct tsocket_address *r;
     405
     406        a = socket_get_peer_addr(sock, mem_ctx);
     407        if (a == NULL) {
     408                return NULL;
     409        }
     410
     411        r = socket_address_to_tsocket_address(mem_ctx, a);
     412        talloc_free(a);
     413        return r;
     414}
     415
     416_PUBLIC_ struct tsocket_address *socket_get_local_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx)
     417{
     418        struct socket_address *a;
     419        struct tsocket_address *r;
     420
     421        a = socket_get_my_addr(sock, mem_ctx);
     422        if (a == NULL) {
     423                return NULL;
     424        }
     425
     426        r = socket_address_to_tsocket_address(mem_ctx, a);
     427        talloc_free(a);
     428        return r;
    345429}
    346430
Note: See TracChangeset for help on using the changeset viewer.