author | Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM> |
Sat, 20 Oct 2012 00:06:08 -0700 | |
branch | s11-sru |
changeset 2391 | 811524a2620b |
child 5941 | db8aa9865e9f |
permissions | -rw-r--r-- |
2391
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
1 |
--- src/tspi/rpc/tcstp/rpc.c 2010-03-11 12:26:51.000000000 -0800 |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
2 |
+++ src/tspi/rpc/tcstp/rpc.c 2012-04-11 14:28:08.181630000 -0700 |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
3 |
@@ -345,41 +345,67 @@ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
4 |
BYTE *buffer; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
5 |
TSS_RESULT result; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
6 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
7 |
- struct sockaddr_in addr; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
8 |
- struct hostent *hEnt = NULL; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
9 |
+ if (get_port() == 0) { /* use UNIX Domain socket */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
10 |
+ struct sockaddr_un addr; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
11 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
12 |
- sd = socket(PF_INET, SOCK_STREAM, 0); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
13 |
- if (sd == -1) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
14 |
- LogError("socket: %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
15 |
- result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
16 |
- goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
17 |
- } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
18 |
- |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
19 |
- memset(&addr, 0, sizeof(addr)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
20 |
- addr.sin_family = AF_INET; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
21 |
- addr.sin_port = htons(get_port()); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
22 |
+ sd = socket(PF_UNIX, SOCK_STREAM, 0); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
23 |
+ if (sd == -1) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
24 |
+ LogError("socket(PF_UNIX): %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
25 |
+ result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
26 |
+ goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
27 |
+ } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
28 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
29 |
- LogDebug("Sending TSP packet to host %s.", hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
30 |
+ memset(&addr, 0, sizeof(addr)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
31 |
+ addr.sun_family = AF_UNIX; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
32 |
+ strncpy(addr.sun_path, TCSD_DEFAULT_SOCKET, |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
33 |
+ sizeof(addr.sun_path)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
34 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
35 |
+ LogDebug("Connecting to UNIX Domain socket %s", |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
36 |
+ TCSD_DEFAULT_SOCKET); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
37 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
38 |
+ if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
39 |
+ LogError("connect: %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
40 |
+ result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
41 |
+ goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
42 |
+ } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
43 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
44 |
- /* try to resolve by hostname first */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
45 |
- hEnt = gethostbyname((char *)hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
46 |
- if (hEnt == NULL) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
47 |
- /* if by hostname fails, try by dot notation */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
48 |
- if (inet_aton((char *)hte->hostname, &addr.sin_addr) == 0) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
49 |
- LogError("hostname %s does not resolve to a valid address.", hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
50 |
- result = TSPERR(TSS_E_CONNECTION_FAILED); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
51 |
+ } else { /* use TCP socket */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
52 |
+ struct sockaddr_in addr; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
53 |
+ struct hostent *hEnt = NULL; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
54 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
55 |
+ sd = socket(PF_INET, SOCK_STREAM, 0); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
56 |
+ if (sd == -1) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
57 |
+ LogError("socket: %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
58 |
+ result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
59 |
goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
60 |
} |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
61 |
- } else { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
62 |
- memcpy(&addr.sin_addr, hEnt->h_addr_list[0], 4); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
63 |
- } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
64 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
65 |
- LogDebug("Connecting to %s", inet_ntoa(addr.sin_addr)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
66 |
+ memset(&addr, 0, sizeof(addr)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
67 |
+ addr.sin_family = AF_INET; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
68 |
+ addr.sin_port = htons(get_port()); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
69 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
70 |
+ LogDebug("Sending TSP packet to host %s.", hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
71 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
72 |
+ /* try to resolve by hostname first */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
73 |
+ hEnt = gethostbyname((char *)hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
74 |
+ if (hEnt == NULL) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
75 |
+ /* if by hostname fails, try by dot notation */ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
76 |
+ if (inet_aton((char *)hte->hostname, &addr.sin_addr) == 0) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
77 |
+ LogError("hostname %s does not resolve to a valid address.", hte->hostname); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
78 |
+ result = TSPERR(TSS_E_CONNECTION_FAILED); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
79 |
+ goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
80 |
+ } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
81 |
+ } else { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
82 |
+ memcpy(&addr.sin_addr, hEnt->h_addr_list[0], 4); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
83 |
+ } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
84 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
85 |
- if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
86 |
- LogError("connect: %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
87 |
- result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
88 |
- goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
89 |
+ LogDebug("Connecting to %s", inet_ntoa(addr.sin_addr)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
90 |
+ |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
91 |
+ if (connect(sd, (struct sockaddr *) &addr, sizeof (addr))) { |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
92 |
+ LogError("connect: %s", strerror(errno)); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
93 |
+ result = TSPERR(TSS_E_COMM_FAILURE); |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
94 |
+ goto err_exit; |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
95 |
+ } |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
96 |
} |
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
97 |
|
811524a2620b
7123028 Problem with crypto/tss
Tsu-Phong Wu <Tsu-Phong.Wu@oracle.COM>
parents:
diff
changeset
|
98 |
if (send_to_socket(sd, hte->comm.buf, hte->comm.hdr.packet_size) < 0) { |