LCOV - code coverage report
Current view: top level - netwerk/base - nsNetAddr.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 62 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 11 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* vim: et ts=2 sw=2 tw=80
       2             :  */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "nsNetAddr.h"
       8             : #include "nsString.h"
       9             : #include "mozilla/net/DNS.h"
      10             : 
      11             : using namespace mozilla::net;
      12             : 
      13           0 : NS_IMPL_ISUPPORTS(nsNetAddr, nsINetAddr)
      14             : 
      15             : /* Makes a copy of |addr| */
      16           0 : nsNetAddr::nsNetAddr(NetAddr* addr)
      17             : {
      18           0 :   NS_ASSERTION(addr, "null addr");
      19           0 :   mAddr = *addr;
      20           0 : }
      21             : 
      22           0 : NS_IMETHODIMP nsNetAddr::GetFamily(uint16_t *aFamily)
      23             : {
      24           0 :   switch(mAddr.raw.family) {
      25             :   case AF_INET:
      26           0 :     *aFamily = nsINetAddr::FAMILY_INET;
      27           0 :     break;
      28             :   case AF_INET6:
      29           0 :     *aFamily = nsINetAddr::FAMILY_INET6;
      30           0 :     break;
      31             : #if defined(XP_UNIX)
      32             :   case AF_LOCAL:
      33           0 :     *aFamily = nsINetAddr::FAMILY_LOCAL;
      34           0 :     break;
      35             : #endif
      36             :   default:
      37           0 :     return NS_ERROR_UNEXPECTED;
      38             :   }
      39             : 
      40           0 :   return NS_OK;
      41             : }
      42             : 
      43           0 : NS_IMETHODIMP nsNetAddr::GetAddress(nsACString & aAddress)
      44             : {
      45           0 :   switch(mAddr.raw.family) {
      46             :   /* PR_NetAddrToString can handle INET and INET6, but not LOCAL. */
      47             :   case AF_INET:
      48           0 :     aAddress.SetCapacity(kIPv4CStrBufSize);
      49           0 :     NetAddrToString(&mAddr, aAddress.BeginWriting(), kIPv4CStrBufSize);
      50           0 :     aAddress.SetLength(strlen(aAddress.BeginReading()));
      51           0 :     break;
      52             :   case AF_INET6:
      53           0 :     aAddress.SetCapacity(kIPv6CStrBufSize);
      54           0 :     NetAddrToString(&mAddr, aAddress.BeginWriting(), kIPv6CStrBufSize);
      55           0 :     aAddress.SetLength(strlen(aAddress.BeginReading()));
      56           0 :     break;
      57             : #if defined(XP_UNIX)
      58             :   case AF_LOCAL:
      59           0 :     aAddress.Assign(mAddr.local.path);
      60           0 :     break;
      61             : #endif
      62             :   // PR_AF_LOCAL falls through to default when not XP_UNIX
      63             :   default:
      64           0 :     return NS_ERROR_UNEXPECTED;
      65             :   }
      66             : 
      67           0 :   return NS_OK;
      68             : }
      69             : 
      70           0 : NS_IMETHODIMP nsNetAddr::GetPort(uint16_t *aPort)
      71             : {
      72           0 :   switch(mAddr.raw.family) {
      73             :   case AF_INET:
      74           0 :     *aPort = ntohs(mAddr.inet.port);
      75           0 :     break;
      76             :   case AF_INET6:
      77           0 :     *aPort = ntohs(mAddr.inet6.port);
      78           0 :     break;
      79             : #if defined(XP_UNIX)
      80             :   case AF_LOCAL:
      81             :     // There is no port number for local / connections.
      82           0 :     return NS_ERROR_NOT_AVAILABLE;
      83             : #endif
      84             :   default:
      85           0 :     return NS_ERROR_UNEXPECTED;
      86             :   }
      87             : 
      88           0 :   return NS_OK;
      89             : }
      90             : 
      91           0 : NS_IMETHODIMP nsNetAddr::GetFlow(uint32_t *aFlow)
      92             : {
      93           0 :   switch(mAddr.raw.family) {
      94             :   case AF_INET6:
      95           0 :     *aFlow = ntohl(mAddr.inet6.flowinfo);
      96           0 :     break;
      97             :   case AF_INET:
      98             : #if defined(XP_UNIX)
      99             :   case AF_LOCAL:
     100             : #endif
     101             :     // only for IPv6
     102           0 :     return NS_ERROR_NOT_AVAILABLE;
     103             :   default:
     104           0 :     return NS_ERROR_UNEXPECTED;
     105             :   }
     106             : 
     107           0 :   return NS_OK;
     108             : }
     109             : 
     110           0 : NS_IMETHODIMP nsNetAddr::GetScope(uint32_t *aScope)
     111             : {
     112           0 :   switch(mAddr.raw.family) {
     113             :   case AF_INET6:
     114           0 :     *aScope = ntohl(mAddr.inet6.scope_id);
     115           0 :     break;
     116             :   case AF_INET:
     117             : #if defined(XP_UNIX)
     118             :   case AF_LOCAL:
     119             : #endif
     120             :     // only for IPv6
     121           0 :     return NS_ERROR_NOT_AVAILABLE;
     122             :   default:
     123           0 :     return NS_ERROR_UNEXPECTED;
     124             :   }
     125             : 
     126           0 :   return NS_OK;
     127             : }
     128             : 
     129           0 : NS_IMETHODIMP nsNetAddr::GetIsV4Mapped(bool *aIsV4Mapped)
     130             : {
     131           0 :   switch(mAddr.raw.family) {
     132             :   case AF_INET6:
     133           0 :     *aIsV4Mapped = IPv6ADDR_IS_V4MAPPED(&mAddr.inet6.ip);
     134           0 :     break;
     135             :   case AF_INET:
     136             : #if defined(XP_UNIX)
     137             :   case AF_LOCAL:
     138             : #endif
     139             :     // only for IPv6
     140           0 :     return NS_ERROR_NOT_AVAILABLE;
     141             :   default:
     142           0 :     return NS_ERROR_UNEXPECTED;
     143             :   }
     144             : 
     145           0 :   return NS_OK;
     146             : }
     147             : 
     148           0 : NS_IMETHODIMP nsNetAddr::GetNetAddr(NetAddr *aResult) {
     149           0 :   memcpy(aResult, &mAddr, sizeof(mAddr));
     150           0 :   return NS_OK;
     151             : }
     152             : 

Generated by: LCOV version 1.13