Changeset 2989c7e in mainline for uspace/srv/net/udp/assoc.c
- Timestamp:
- 2015-05-25T21:04:33Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ab6326bc
- Parents:
- 58e9dec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/udp/assoc.c
r58e9dec r2989c7e 41 41 #include <inet/endpoint.h> 42 42 #include <io/log.h> 43 #include <nettl/amap.h> 43 44 #include <stdlib.h> 44 45 … … 46 47 #include "msg.h" 47 48 #include "pdu.h" 48 #include "ucall.h"49 49 #include "udp_inet.h" 50 50 #include "udp_type.h" 51 51 52 LIST_INITIALIZE(assoc_list); 53 FIBRIL_MUTEX_INITIALIZE(assoc_list_lock); 52 static LIST_INITIALIZE(assoc_list); 53 static FIBRIL_MUTEX_INITIALIZE(assoc_list_lock); 54 static amap_t *amap; 54 55 55 56 static udp_assoc_t *udp_assoc_find_ref(inet_ep2_t *); … … 57 58 static bool udp_ep_match(inet_ep_t *, inet_ep_t *); 58 59 static bool udp_ep2_match(inet_ep2_t *, inet_ep2_t *); 60 61 /** Initialize associations. */ 62 int udp_assocs_init(void) 63 { 64 int rc; 65 66 rc = amap_create(&amap); 67 if (rc != EOK) { 68 assert(rc == ENOMEM); 69 return ENOMEM; 70 } 71 72 return EOK; 73 } 59 74 60 75 /** Create new association structure. … … 168 183 * Add association to the association map. 169 184 */ 170 void udp_assoc_add(udp_assoc_t *assoc) 171 { 185 int udp_assoc_add(udp_assoc_t *assoc) 186 { 187 inet_ep2_t aepp; 188 int rc; 189 172 190 udp_assoc_addref(assoc); 173 191 fibril_mutex_lock(&assoc_list_lock); 192 193 rc = amap_insert(amap, &assoc->ident, assoc, af_allow_system, &aepp); 194 if (rc != EOK) { 195 udp_assoc_delref(assoc); 196 fibril_mutex_unlock(&assoc_list_lock); 197 return rc; 198 } 199 200 assoc->ident = aepp; 174 201 list_append(&assoc->link, &assoc_list); 175 202 fibril_mutex_unlock(&assoc_list_lock); 203 204 return EOK; 176 205 } 177 206 … … 183 212 { 184 213 fibril_mutex_lock(&assoc_list_lock); 214 amap_remove(amap, &assoc->ident); 185 215 list_remove(&assoc->link); 186 216 fibril_mutex_unlock(&assoc_list_lock); … … 199 229 fibril_mutex_lock(&assoc->lock); 200 230 assoc->ident.local_link = iplink; 201 fibril_mutex_unlock(&assoc->lock);202 }203 204 /** Set remote endpoint in association.205 *206 * @param assoc Association207 * @param remote Remote endpoint (deeply copied)208 */209 void udp_assoc_set_remote(udp_assoc_t *assoc, inet_ep_t *remote)210 {211 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_set_remote(%p, %p)", assoc, remote);212 fibril_mutex_lock(&assoc->lock);213 assoc->ident.remote = *remote;214 fibril_mutex_unlock(&assoc->lock);215 }216 217 /** Set local endpoint in association.218 *219 * @param assoc Association220 * @param local Local endpoint (deeply copied)221 *222 */223 void udp_assoc_set_local(udp_assoc_t *assoc, inet_ep_t *local)224 {225 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_set_local(%p, %p)", assoc, local);226 fibril_mutex_lock(&assoc->lock);227 assoc->ident.local = *local;228 fibril_mutex_unlock(&assoc->lock);229 }230 231 /** Set local port in association.232 *233 * @param assoc Association234 * @param lport Local port235 *236 */237 void udp_assoc_set_local_port(udp_assoc_t *assoc, uint16_t lport)238 {239 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_set_local(%p, %" PRIu16 ")", assoc, lport);240 fibril_mutex_lock(&assoc->lock);241 assoc->ident.local.port = lport;242 231 fibril_mutex_unlock(&assoc->lock); 243 232 }
Note:
See TracChangeset
for help on using the changeset viewer.